0

この質問は主にAngularJs 1.xのangular-meteorパッケージに関するものです

私は流星のコレクションを見て、それが変更されたときにいくつかの計算をしようとしています。

angular.module('my-app').controller('MyCtrl', ['$scope', '$meteor', function($scope, $meteor) {
    var filter = {myfield: 10};
    $meteor.subscribe('mycollection', filter);
    $scope.mycollection = $scope.$meteorCollection(Mycollection);

    $scope.$watch('mycollection', function () {
        console.log($scope.mycollection.length)
    });
}]);

しかし、うまくいきません。$scope.mycollectionmycollection が何度変更されても、watch 関数は が空のときに 1 回だけ呼び出されます。の変更を監視する方法はmycollection?

4

1 に答える 1

2

ディープウォッチャーを設定するには、オブジェクトの等価オプションを true に設定する必要があります

$scope.$watch('mycollection', function (newVal) {
    console.log($scope.mycollection.length)
}, true); //true for deep watch

ディープ ウォッチャーを使用したくない場合は、 を使用して浅いウォッチャーを使用できます$watchCollection。これは、ディープ ウォッチャーを使用している場合にディープ ウォッチャーが影響を与えるためです。

于 2015-09-05T17:43:31.553 に答える