Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 强制$scope.$watch只发射一次_Javascript_Angularjs - Fatal编程技术网

Javascript 强制$scope.$watch只发射一次

Javascript 强制$scope.$watch只发射一次,javascript,angularjs,Javascript,Angularjs,如何防止这只$watch多次开火?在上述代码片段之前的任何时候,我都不会定义或更改$scope.text。我试图测试newValue!==oldValue但这并没有改变任何东西 编辑: 我已经把这个问题缩小为一个指示性问题。正在监视的输入框位于自定义指令内,这是由于某些原因多次影响输入框的ng model。

如何防止这只$watch多次开火?在上述代码片段之前的任何时候,我都不会定义或更改
$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