我有一块手表
$scope.$watchCollection('[deal.curr1, deal.curr2]', function (newValues) {
...
}
然后我改变代码中的值:
$scope.deal.curr1 ="USD";
但在一个案例中,curr1已经是" USD" 手表不会被称为。 但是无论如何我想要它。 在没有帮助之前设置null。
$scope.deal.curr1 =null;
$scope.deal.curr1 ="USD";
答案 0 :(得分:0)
设置为null然后其他值无法正常工作,因为在每个周期之后都会进行逐步验证,如果你没有这样做,则必须将其设置为null然后使用$ timeout。
$scope.var=null
$timeout(function(){
$scope.val="value";
})
要在下一个周期分配新值,但这将运行两次验证。
现在的问题是。如果值保持不变,为什么要运行watch函数?这是一种保护措施,可以避免不必要的呼叫并提高性能如果价值没有变化,那么观察者不应该做出反应的正当理由。
如果你仍然必须建议在可能的情况下观察其他参数,这会给出某些动作发生的迹象。
你能在用例中详细说明吗?
答案 1 :(得分:0)
只有在最后两次调用中watchExpression不同时才会触发侦听器。由于您只想触发侦听器,因此您只需手动调用它即可。 Scope
编辑:因为在$ http调用之后总是调用侦听器,只需在$ http promise的成功处理程序中调用侦听器并抛弃$ watchCollection
$http(...).then(function(payload){
//things you do with the resonse. like setting $scope.deal.curr1
$scope.listener(newVal);
}, function(reason){...})