0

尝试在这里做一些简单的事情。

在我的控制器中:

  $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,但没有任何效果。

4

2 回答 2

4

从您的手表中删除 $scope。它应该读作:

$scope.$watch('testObject.name', function(e,n,v){
    console.log("reached");
});
于 2013-07-23T14:06:09.637 回答
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);
于 2013-07-23T14:15:06.293 回答