Angular 工厂返回数据后未设置 $scope

Angular $scope not set after factory returned data

我有一个带有工厂和控制器的 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 没有正确设置数据?

由于 balance 是异步的,您不能直接从中 return。您需要在 then 回调中设置范围值。

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