2

每当集合中所有对象的属性 IsSelected 设置为 false 时,我都希望禁用一个按钮。

要深入观察集合以在属性更改时采取行动,我会:

$scope.$watch('messages', function (i) {
       //do something
}, true);

但是集合太大(实际上我只有两个元素,但这些都是大对象)并且我在“内存不足”异常中运行。

那么,我应该怎么做呢?

[编辑]

遵循@boxed 建议:

        $scope.$watch(function () {
            return $($scope.messages).map(function () {
                return this.IsSelected;
            });

        }, function (e) {
            //do something
        });

它仍然很慢,我遇到了错误:

  • Erreur d'execution JavaScript:达到 10 次 $digest() 迭代。中止!
4

2 回答 2

2

$watch 的第一个参数可以是一个函数。在该函数中,您可以返回所有项目的所有 IsSelected 属性的列表。

于 2013-06-03T14:11:18.037 回答
0

您可以增加摘要限制 https://docs.angularjs.org/api/ng/provider/ $rootScopeProvider

        $rootScopeProvider.digestTtl(25);
于 2014-06-04T03:48:43.450 回答