$scope.$watch 数组中的特定对象 - Angular JS 控制器
$scope.$watch a particular object inside an array - Angular JS controller
我的架构如下。
Orders {
customers[{
customerId: String,
address: String,
onlineOrder [{
items...
}],
directOrder [{
items...
}]
}]
}
现在,出于某种原因(太大而无法解释)我想要一个监视功能,用于添加到 onlineOrder[items] 数组的任何项目。
为此,我无法编写这样的函数,
$scope.$watch('order.customer[i].onlineOrder[j]')
其中 i 和 j 是数组索引。
因为我希望为当前第'i'个客户触发监视功能,对于第'j'个在线订单项的每个add/delete/modify
我需要这方面的帮助。
我建议控制对您需要监视的数组的访问,这样您就可以自己了解更改,而不会出现 $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
表达式,因为你控制了改变对象的唯一方法。
我的架构如下。
Orders {
customers[{
customerId: String,
address: String,
onlineOrder [{
items...
}],
directOrder [{
items...
}]
}]
}
现在,出于某种原因(太大而无法解释)我想要一个监视功能,用于添加到 onlineOrder[items] 数组的任何项目。
为此,我无法编写这样的函数,
$scope.$watch('order.customer[i].onlineOrder[j]')
其中 i 和 j 是数组索引。
因为我希望为当前第'i'个客户触发监视功能,对于第'j'个在线订单项的每个add/delete/modify
我需要这方面的帮助。
我建议控制对您需要监视的数组的访问,这样您就可以自己了解更改,而不会出现 $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
表达式,因为你控制了改变对象的唯一方法。