这就是我所拥有的:
$scope.$watch('someVar', function (val) {
$scope.someList.push(val);
execLongFunction.then(function (data) {
val.computedValue = data;
})
})
我想要的是:在我的作用域中为数组添加一个值,然后执行一些计算然后(可能)更新作用域。重点是我希望在val
完成之前将execLongFunction
推送到范围数组。
问题是:所有$ watch回调代码都会立即执行:即使我添加了一些console.log(),我也会同时看到所有这些。
我做错了什么?
答案 0 :(得分:0)
$scope.$watch('someVar', function (newVal,oldVal) {
if(newVal != oldVal){
$scope.someList.push(newVal);
execLongFunction.then(function (data) {
val.computedValue = data;
})
}
});
$ watch返回您正在观看的$ scope变量的oldValue和newValue。尝试使用它们并相应地执行您的功能。如果每次从指令更新时'someVar'的值不会改变,那么这应该有效。