你能解释一下为什么这个简单的代码不起作用 我希望在控制器中看到用户对象的更改。
<!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>
答案 0 :(得分:4)
试试这个:
$scope.$watch("user", function(n, o) {
...
}, true);
希望它可以在Angular 1.0.8中使用。
这样做是为了指示Angular对您的对象进行“深入监视”。此外,由于user
位于$scope
中,因此您只需使用字符串即可指定依赖关系。这是可选的,您仍然可以使用函数而不是"user"
作为$watch
的第一个参数。