参考和收藏手表在Angular

时间:2015-09-08 13:43:20

标签: javascript angularjs breeze

在Angular 1.3应用程序中,我有一个范围对象(简化),如下所示:

$scope.data = {
    myObject = {
        id = 0
        someItems = [
            {
                id = 0, 
                title = foo
            },
            {
                id = 0, 
                title = foo
            }
        ]
    }
}

我的真实对象包含更多属性和循环引用。

如果data.myObject分配了新对象,data.myObject.id的值发生了变化,或者myObject.someItems中添加或删除了某个项目,我需要一个被调用的手表。

这可以通过两只手表一起实现:

$scope.$watchGroup(
    ['data.myObject', 'data.myObject.id'],
    function () {
        doSomething();
    }
);
$scope.$watchCollection(
    'data.myObject.someItems',
    function () {
        doSomething();
    }
);

这种方法的问题在于,如果data.myObject更改doSomething被调用两次。因此,我正在寻找一种方法来处理单watch

等式监视似乎不合适,因为对象上有许多其他属性不需要监视。由于我的对象包含循环引用,因此提议的here之类的解决方案也不起作用。

更新 这是一个JSFiddle。单击“更改1”,“更改2”和“更改3”都应该导致单个警报。目前点击“更改1”会发出两个警报。

0 个答案:

没有答案