1

この単純なコードが機能しない理由を説明してもらえますか? コントローラー内のユーザー オブジェクトの変更を確認したいのですが。

<!doctype html>
 <html ng-app="myApp">
    <head>
        <meta charset="utf-8">

    </head>
    <body>
        <div data-ng-controller="MainCtrl">
            <h1>User Info</h1>
                <form novalidate id="my-frm" name="myFrm">
                    <label>Last name</label>
                    <input type="text" ng-model="user.lastName">
                    <label>First name</label>
                    <input type="text" ng-model="user.firstName">
                    <p ng-click="add()">add</p>
                </form>
        </div>
        <script src="http://code.angularjs.org/1.0.8/angular.min.js"></script>
        <script>
            var app = angular.module('myApp', []);

            app.controller('MainCtrl',function($scope,$log){
                $scope.user = {};
                $scope.add = function(){
                    $log.info($scope.user);
                };
                $scope.$watch(
                    function(){
                        return $scope.user;
                    },
                    function(n,o){
                       $log.info(n);
                       $log.info(o); 
                    }
                );

            });
        </script>
    </body>
</html>
4

1 に答える 1

4

これを試して:

$scope.$watch("user", function(n, o) {
    ...
}, true);

うまくいけば、Angular 1.0.8 で使用できるようになります。

これが行うことは、オブジェクトに対して「深い監視」を行うよう Angular に指示することです。また、userは にあるため$scope、文字列だけを使用して依存関係を指定できます。"user"これはオプションです。への最初の引数として代わりに関数を使用できます$watch

于 2013-10-24T09:47:57.290 に答える