在使用 angularjs 1.0.2 观看承诺时,我有一个奇怪的行为。
我的函数被调用两次,而不是在 promise 更改后获取旧值和新值。第一次未定义新值,第二次未定义旧值。
这里是演示(结果出现在控制台中):http: //jsfiddle.net/franckv/BqmJv/2/
angular.module('myApp', []);
function Ctrl($scope, $timeout, $q) {
var j = 0;
$scope.model = {
aPromise: $q.when(0),
getAPromise: function () {
var deferred = $q.defer();
deferred.resolve(++j);
return deferred.promise;
},
updateAPromise: function () {
console.log('\nupdateAPromise called');
$scope.model.aPromise = this.getAPromise();
}
}
$scope.$watch('model.aPromise', function (newPromise, oldPromise) {
console.log('newPromise:' + newPromise + ', oldPromise:' + oldPromise);
});
}
知道为什么它的行为如此,以及如何获得与正常值相同的行为吗?