我使用下拉列表,通过Angular JS控制器中的$scope.$watch
侦听器回调来呈现一些结果。
当我更改下拉列表其他值时,它可以正常工作。 但在某些情况下,我需要保留最后选择的结果(不需要提升该事件)。
我已经尝试了ng-change
和ng-click
,但之后又有效了
$scope.$watch
提出来了。
任何帮助将不胜感激
答案 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对变量的监视。