Angularjs 角度JS阻止$watch侦听器

Angularjs 角度JS阻止$watch侦听器,angularjs,Angularjs,我使用了下拉列表,通过Angular JS controller中的$scope.$watch侦听器回调来呈现一些结果 当我更改下拉列表的其他值时,它工作正常。 但在某些情况下,我需要保留最后选定的结果(不需要引发该事件) 我尝试了ng change和ng click,但之后它就可以工作了 $scope.$watch已升起 如果您有任何帮助,我们将不胜感激。在$scope.$watch()上有一个重载,您还可以在其中捕获被监视属性的先前值 $scope.$watch(propertyExpre

我使用了下拉列表,通过Angular JS controller中的
$scope.$watch
侦听器回调来呈现一些结果

当我更改下拉列表的其他值时,它工作正常。 但在某些情况下,我需要保留最后选定的结果(不需要引发该事件)

我尝试了
ng change
ng click
,但之后它就可以工作了
$scope.$watch
已升起



如果您有任何帮助,我们将不胜感激。

$scope.$watch()
上有一个重载,您还可以在其中捕获被监视属性的先前值

$scope.$watch(propertyExpression, newValue, oldValue)
这就是你要找的吗?没有代码示例很难读懂您的想法;)

如果您想保留更大的值,您可能需要考虑在控制器中保留一些状态。 顺便说一句,总是使用此重载并首先使用

(newValue!==oldValue)
检查您正在观看的对象是否真的发生了更改是很有趣的,因为(如果我回忆正确的话)
$scope。在更高级别的节点上调用
$scope.$apply
时也会触发$watch

看看这是否有效

var unregisterWatch =
    $scope.$watch('param', function(newVal, oldVal) {
           if (newVal === oldVal) 
              return; // 
           });

需要时调用此函数,它将取消Angular对变量的监视。

请包含一些代码示例。