2

以下のコードは、ページが最初に読み込まれたときにのみログに記録します。どうしたの?

<!DOCTYPE html>
<html ng-app>
    <head>
        <title>Test</title>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.4/angular.min.js"></script>
    </head>
    <body>
        <div ng-controller="PageController">
            <p ng-bind="model.header"></p>
            <p>Value: <input ng-model="model.header" /></p>
        </div>
        <script>
            function PageController($scope) {
                $scope.model = {};
                $scope.model.header = 'Header';

                $scope.onModelChange = function (newValue, oldValue, scope) {
                    console.log('model changed > newValue: ' + newValue + ' > oldValue: ' + oldValue);
                };

                $scope.$watch($scope.model, $scope.onModelChange, true);
            }
        </script>
    </body>
</html>
4

2 に答える 2

14

$watch の最初の引数は、スコープ プロパティ自体にする必要があります。

$scope.$watch("model", $scope.onModelChange);

また、このプロパティでディープ ウォッチを有効にする必要はありません (3 番目の引数)。

于 2013-09-17T15:37:43.180 に答える