出厂返回数据后未设置Angular $范围

时间:2016-04-16 11:58:41

标签: javascript angularjs angular-resource

我有一个带工厂和控制器的Angular应用程序:

.factory('dogeFactory', ['$resource', function ($resource) {
    var dogeResource = $resource("https://dogechain.info/api/v1/address/balance/:address");
    return {
        balance: function(address){
            return dogeResource.get({address: address}).$promise
            .then(
                function(data){ 
                    return data.balance;
                }
            );
        },
    }
}])

.controller('TwoController', function($scope, dogeFactory){
    $scope.balance = dogeFactory.balance('D8EyEfuNsfQ3root9R3ac54mMcLmoNBW6q').then(
    function(data){
        console.log(data);
        return data;
    });

控制器中的console.log(data);会显示正确的数据,但当我在视图中调用{{balance}}时,会显示{}

Here is the issue on jsfiddle

为什么$scope.balance未正确设置数据?

1 个答案:

答案 0 :(得分:4)

由于balance是异步的,因此您无法直接从中返回。您需要在then回调中设置范围值。

dogeFactory.balance('D8EyEfuNsfQ3root9R3ac54mMcLmoNBW6q').then(function(data){
    console.log(data);
    $scope.balance = data;
});
相关问题