2

オブジェクトのプロパティを変更すると、プロパティが関数に設定されていない限り、そのオブジェクトの起動を監視しているようです。

angular.module('app', [])
.controller('ctrl', function($scope) {

    $scope.object1 = {};
    $scope.object2 = {};

    $scope.clicked1 = function() {
        $scope.object1.message = "Object1 property changed"            
    }

    $scope.clicked2 = function() {
        $scope.object1.fn = function() {
            return "Object1 fn changed";
        }
    }

    $scope.$watch('object1', function(o) {
        if (o.message)
            $scope.object2.message = o.message + ', and watch fired';
        else if (o.fn) {
            $scope.object2.message = o.fn();
        }
    }, true);
});

http://jsfiddle.net/TkWP6/を参照してください。clicked1 が呼び出されると $watch が期待どおりに起動しますが、clicked2 が呼び出されると何も起こりません。

簡単な質問は、なぜそれができないのかということです。$watch を起動させるために何かできることはありますか。

4

1 に答える 1