2

コレクション内のすべてのオブジェクトのプロパティ IsSelected が false に設定されている場合は常に、ボタンを無効にしたいと考えています。

プロパティが変更されたときにアクションを実行するためにコレクションを詳細に監視するには、次のようにします。

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

しかし、コレクションが大きすぎて (実際には 2 つの要素しかありませんが、これらは大きなオブジェクトです)、「メモリ不足」の例外が発生します。

それで、代わりに何をすべきですか?

[編集]

次の @boxed 提案:

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

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

それでも非常に遅く、エラーが発生します。

  • JavaScript の実行エラー: 10 回の $digest() 反復に達しました。中止します!
4

2 に答える 2

2

$watch の最初の引数は関数にすることができます。その関数では、すべてのアイテムのすべての IsSelected プロパティのリストを返すことができます。

于 2013-06-03T14:11:18.037 に答える