$ watch不用美元($)触发变量

时间:2017-05-16 19:41:38

标签: javascript angularjs angularjs-scope angularjs-watch

我有一个对象的手表。当对象的属性发生更改时,手表将触发,除非属性名称以美元($)开头。

考虑这段代码:

$scope.data = {};

$scope.$watch('data', function (newValue, oldValue) {
        console.log('fired', newValue);
    }, true);

和html:

<div>
this will fire the event
<input type="text" ng-model="data.x" />
</div>
<div>
this won't
<input type="text" ng-model="data.$" />
</div>

你可以在这个小提琴中看到它: https://jsfiddle.net/gtrwzsn1/179/

这对我来说非常重要,因为我必须使用带有$的属性名称来进行过滤。

1 个答案:

答案 0 :(得分:2)

AngularJs具有“$ watchCollection”功能,作为观察集合(即数组或对象)变化的手段。

$scope.$watchCollection('data', function (newValue, oldValue) {
  console.log('fired', newValue);
});

请在上面的代码段中尝试观看对象。希望这会有所帮助。