angularjs:$ watch未触发

时间:2013-07-23 14:02:49

标签: javascript angularjs

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

在我的控制器中:

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

2 个答案:

答案 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);