Angularjs在表单中观察对象不起作用

时间:2013-10-24 09:45:15

标签: angularjs

你能解释一下为什么这个简单的代码不起作用 我希望在控制器中看到用户对象的更改。

<!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>

1 个答案:

答案 0 :(得分:4)

试试这个:

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

希望它可以在Angular 1.0.8中使用。

这样做是为了指示Angular对您的对象进行“深入监视”。此外,由于user位于$scope中,因此您只需使用字符串即可指定依赖关系。这是可选的,您仍然可以使用函数而不是"user"作为$watch的第一个参数。