繁体   English   中英

$ 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]数组中的所有项目。

为此,我无法编写类似的函数,

$范围。$手表( '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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM