У меня такой код:
<ion-content>
<ion-list>
<ion-item > 订单号 餐桌 顾客姓名 顾客电话号码 配送地址 订单备注 下单时间 </ion-item>
<ion-item ng-repeat="x in orders|orderBy:'order_id'">
{{ x.order_id + ', ' + x.table_id+', '+x.name+', '+x.phone+', '+x.address+', '+x.remark+', '+changTimetoString(x.ctime)}}
<button onclick="window.viewOrderDetails(x.detail)">Order detail</button>
</ion-item>
</ion-list>
</ion-content>
В app.js:
app.controller('customersController', ['$scope', '$http', function($scope,$http) {
$http.get("http://18ff2f50.tunnel.mobi/yii2-basic/tests/Customers_JSON.json")
.success(function (response)
{
console.log("debug",response);
$scope.orders = response;
});
window.viewOrderDetails = function viewOrderDetails(detail) {
var newWin = open('orderdetails.html','windowName','height=300,width=300');
newWin.document.write('html to write...');
newWin.document.write(detail);
}
Я хочу x.detail как входной параметр для window.viewOrderDetails.
Но когда я нажимаю кнопку "Заказать деталь", он говорит, что "х не определен". Я хочу знать, где проблема. Благодарю.
Немного сложно сказать, но я предполагаю, что проблема здесь в том, что x не анализируется, потому что onclick
- это просто выражение ванильного JavaScript, а не угловое выражение. Какая разница?
Что-то вроде того, что у вас есть сейчас, - это чистый javascript, в то время как угловой имеет свой собственный язык (это очень, очень близко к javascript), он использует в нем директивные выражения. X означает что-то угловое, но не регулярное javascript. Итак, как это исправить? Двумя способами.
Во-первых, вы можете изменить свой элемент button
чтобы добавить ng-click. Вот так.
<button ng-click="viewOrderDetails(x.detail)">Order detail</button>
Затем добавьте метод к вашему контроллеру для следующего.
$scope.viewOrderDetails = function viewOrderDetails(detail) {
var newWin = open('orderdetails.html','windowName','height=300,width=300');
newWin.document.write('html to write...');
newWin.document.write(detail);
}
Итак, теперь, поскольку угловой видит, что у него есть директива ng-click
, он будет разбираться в синтаксическом анализе x как одного из текущих объектов в массиве, который вы выполняете.
Как говорили другие, вы также можете использовать это.
<button onclick="window.viewOrderDetails({{x.detail}})">Order detail</button>
Что совершенно верно, но я думаю, что если вы собираетесь создавать приложение в угловом, вы должны, вероятно, добавить что-то вроде viewOrderDetails В контроллер и сделать его частью углового. Это просто лучшая организация.
Но способ, которым это работает, состоит в том, что {{ }}
говорит угловым, чтобы интерполировать и разбирать все, что в них. Таким образом, хотя угловой не оценивает все выражение javascript при щелчке, теперь он знает, что нужно пойти дальше и заменить x в {{}}
на правильный объект, потому что он попытается разобрать все, что он видит в этих скобках.
viewOrderDetails({{x.detail}})
. Я отредактирую ответ. Это должно работать.
Вы должны заключить x.details в фигурные скобки
<button onclick="window.viewOrderDetails('{{x.detail}}')">Order detail</button>
Попробуйте изменить обработчик кликов следующим образом:
<button onclick="window.viewOrderDetails('{{ x.detail }}')">Order detail</button>
onclick
в середине углового приложения?