Angular JS会阻止$ watch listener

时间:2015-06-08 12:32:05

标签: angularjs

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

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

我已经尝试了ng-changeng-click,但之后又有效了 $scope.$watch提出来了。


任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

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

$scope.$watch(propertyExpression, newValue, oldValue)

这是你在找什么?没有代码示例,很难读懂你的想法;)

如果您想保留更旧的值,您可能需要考虑在控制器中保留一些状态。

顺便说一下,总是使用这个重载并首先检查你正在观看的对象是否真的使用(newValue !== oldValue)进行了更改会很有趣,因为(如果我没记错的话)$scope.$watch也会在{{1}时被触发在更高级别的节点上调用。

答案 1 :(得分:0)

看看是否有效,

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

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