呼叫JavaScript功能时

我有这样的代码:呼叫JavaScript功能时

<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作为窗口的输入参数。查看订单详情。

但是,当我点击按钮“订单明细”,它说“x未定义”。 我想知道问题在哪里。谢谢。

回答:

这一点很难说,但我猜问题这里是x不被解析,因为onclick只是一个香草javascript表达式,而不是一个角度表达式。有什么不同?

你现在拥有的东西就是纯粹的javascript,而angular有它自己的语言(它非常非常接近javascript),它在它的指令表达式中使用。 X对Angular而言意味着某种东西,但对于普通的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在控制器中,并使其角部分。这只是更好的组织。

但是,这种方式的工作方式是{{ }}告诉角度来插入和解析它们中的任何内容。所以虽然angular并没有在点击时评估整个javascript表达式,但它现在知道继续,用正确的对象替换{{}}中的x,因为它会尝试解析它在大括号中看到的任何内容。

回答:

试着改变你的点击处理程序如下:

<button onclick="window.viewOrderDetails('{{ x.detail }}')">Order detail</button> 

回答:

你必须附上x.details在大括号

<button onclick="window.viewOrderDetails('{{x.detail}}')">Order detail</button> 

以上是 呼叫JavaScript功能时 的全部内容, 来源链接: utcz.com/qa/266177.html

回到顶部