在使用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);
});
}
知道为什么它表现得像那样以及如何获得与正常值相同的行为?