![](/img/trans.png)
[英]Unit Testing Angular.js with $httpBackend and $scope.$watch
[英]$scope.$watch a particular object inside an array - Angular JS controller
我的架构如下。
Orders {
customers[{
customerId: String,
address: String,
onlineOrder [{
items...
}],
directOrder [{
items...
}]
}]
}
现在,由于某种原因(无法解释),我想要一个监视功能,用于添加到onlineOrder [items]数组中的所有项目。
为此,我无法编写类似的函数,
$范围。$手表( 'order.customer [I] .onlineOrder [j]的')
其中i和j是数组索引。
因为我希望对当前的第i个客户触发监视功能,所以对于第j个在线订购商品的每次添加/删除/修改
在这方面我需要帮助。
我建议控制对需要监视的数组的访问,以便您可以自己了解更改,而不会导致$watch
效率低下。 我不确定您打算对该对象进行什么操作,以及如何操作该对象,但是可以说它具有通过用户单击按钮( ng-click
)添加的项目。
为了控制访问,您可以让按钮调用如下函数:
<button ng-click="doWork(orderId, customerId, newOnlineOrder)">Add Order</button>
//in your controller
$scope.doWork = function (orderId, customerId, onlineOrder) {
//do some work to ensure the order is good, then add it to the collection:
orders[orderId].customers[customerId].push(onlineOrder);
//notify anything that needs to know it changed
notifyMyCode(onlineOrder);
};
这样,您可以轻松知道更改的内容,并可以控制更改的恶意或偶然更改,可以在更新模型之前验证数据,并且可以更快,更确定地知道$watch
表达式,因为您可以控制$watch
更改对象的方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.