$scope.$watch('text', function () {
$scope.obj = new Text($scope.text);
console.log('Hi!');
});
// Hi!
// Hi!
如何防止此$ watch多次触发?我在上面的代码段之前的任何时候都没有定义或更改$scope.text
。我试图测试newValue !== oldValue
,但这没有改变任何东西。
修改
我已将问题缩小到指令问题。正在监视的输入框位于自定义指令中,由于某种原因,多次影响输入框的ng-model
。
答案 0 :(得分:6)
$scope.$watch(..)
返回一个unbind函数,所以这样做:
var unbind = $scope.$watch('text', function () {
$scope.obj = new Text($scope.text);
console.log('Hi!');
unbind();
});
这将导致它射击,并在射击一次后解除绑定。
编辑:
仅适用于valueChanges:
$scope.$watch('text', function (nv, ov) {
if (ov != nv) {
$scope.obj = new Text($scope.text);
console.log('Hi!');
}
});