我知道模板可以绑定到承诺或真实值,并且当该值更改时,模板会更新。
我想在指令中做类似的事情,我观察对承诺的更改,并在更新该承诺时重新加载指令中的数据。
但是,当我看到一个承诺时,它似乎注册了更改,但随后立即设置为“未定义”。
见http://plnkr.co/edit/eOjkuvyrQvKhkAbVLGVG?p=preview
如您所见,模板更新没有问题,但如果您检查控制台,“isNotAPromise”手表按预期工作,但“isAPromise”手表被触发两次,都是“未定义”。
有什么线索吗?
这是让您非常高兴的代码:
app.controller('MainCtrl', function($scope, $q) {
var c;
c = 1;
setInterval(function() {
c = c + 1;
console.log('---------------');
console.log(['c changed to ', c]);
return $scope.$apply(function() {
$scope.isNotAPromise = c;
return $scope.isAPromise = $q.when(c);
});
}, 1000);
$scope.$watch('isAPromise', function(newVal, oldVal) {
return console.log(['isAPromise changed', oldVal, newVal]);
});
return $scope.$watch('isNotAPromise', function(newVal, oldVal) {
return console.log(['isNotAPromise changed', oldVal, newVal]);
});
});
谢谢,罗伊