Javascript 强制$scope.$watch只发射一次
如何防止这只$watch多次开火?在上述代码片段之前的任何时候,我都不会定义或更改Javascript 强制$scope.$watch只发射一次,javascript,angularjs,Javascript,Angularjs,如何防止这只$watch多次开火?在上述代码片段之前的任何时候,我都不会定义或更改$scope.text。我试图测试newValue!==oldValue但这并没有改变任何东西 编辑: 我已经把这个问题缩小为一个指示性问题。正在监视的输入框位于自定义指令内,这是由于某些原因多次影响输入框的ng model。
$scope.text
。我试图测试newValue!==oldValue
但这并没有改变任何东西
编辑:
我已经把这个问题缩小为一个指示性问题。正在监视的输入框位于自定义指令内,这是由于某些原因多次影响输入框的ng model
。
返回一个解除绑定的函数,请执行以下操作:
$scope.$watch('text', function () {
$scope.obj = new Text($scope.text);
console.log('Hi!');
});
// Hi!
// Hi!
这将导致它开火,并在只开火一次后自行解开
编辑:
仅适用于值更改:
var unbind = $scope.$watch('text', function () {
$scope.obj = new Text($scope.text);
console.log('Hi!');
unbind();
});
$scope.$watch(..)
返回一个取消绑定函数,因此执行以下操作:
$scope.$watch('text', function () {
$scope.obj = new Text($scope.text);
console.log('Hi!');
});
// Hi!
// Hi!
这将导致它开火,并在只开火一次后自行解开
编辑:
仅适用于值更改:
var unbind = $scope.$watch('text', function () {
$scope.obj = new Text($scope.text);
console.log('Hi!');
unbind();
});
等等-我希望它在$scope.text的值实际更改时每次触发一次。这会永久解除
$watch
的绑定吗?使用newValue和oldValue进行绑定,正如我之前所说的,我尝试比较ov
和nv
,但它不起作用。console.log在conditional.Directive问题中仍激发了两次:有关详细信息,请参阅。试图排除故障。@DavidXu您能解释一下解除绑定的工作原理吗?如果将解除绑定
设置为变量,为什么要执行$watch
?请稍候-我希望在$scope.text的值实际更改时,每次触发一次。这会永久解除$watch
的绑定吗?使用newValue和oldValue进行绑定,正如我之前所说的,我尝试比较ov
和nv
,但它不起作用。console.log在conditional.Directive问题中仍激发了两次:有关详细信息,请参阅。试图排除故障。@DavidXu您能解释一下解除绑定的工作原理吗?如果将解除绑定
设置为变量,为什么要执行$watch
?