テンプレートはプロミスまたは実際の値のいずれかにバインドでき、その値が変更されるとテンプレートが更新されることを知っています。
私はプロミスの変更を監視し、そのプロミスが更新されたときにディレクティブのデータをリロードする、ディレクティブで同様のことをしたいと考えています。
ただし、プロミスを見ると、変更を登録しているように見えますが、すぐに「未定義」に設定されます。
http://plnkr.co/edit/eOjkuvyrQvKhkAbVLGVG?p=previewを参照してください。
ご覧のとおり、テンプレートは問題なく更新されていますが、コンソールを確認すると、「isNotAPromise」ウォッチは期待どおりに動作しますが、「isAPromise」ウォッチは 2 回トリガーされ、どちらも「未定義」です。
手がかりはありますか?
SOを幸せにするコードは次のとおりです。
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]);
});
});
ありがとう、ロイ