1

在使用 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);
    });

}

知道为什么它的行为如此,以及如何获得与正常值相同的行为吗?

4

0 回答 0