尝试在这里做一些简单的事情。
在我的控制器中:
$scope.testObject = { name : 'john' };
$scope.$watch('$scope.testObject.name', function (e, n, v) {
console.log('reached');
});
在我看来:
<input type="text" ng-model="testObject.name"/>
文本框绑定到testObject的name属性,当加载控制器时,代码进入$ watch函数。
现在,如果我编辑文本框值,则永远不会触发$ watch函数。这是为什么 ?
我也尝试将$ watch的第三个参数设置为true,没有效果。
答案 0 :(得分:4)
从手表中移除$ scope。它应该是:
$scope.$watch('testObject.name', function(e,n,v){
console.log("reached");
});
答案 1 :(得分:1)
使用此:
$scope.$watch('testObject.name', function(e,n,v){
console.log("reached");
});
您还可以添加其他观察者:
$scope.$watch('testObject.attr1 + testObject.attr2', function(e,n,v){
console.log("reached");
});
或:
$scope.$watch('testObject', function(e,n,v){
console.log("reached");
}, true);