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

Angular $scope not set after factory returned data

本文关键字:scope 设置 返回 数据 工厂      更新时间:2023-09-26

我有一个带工厂和控制器的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}}时,它显示{}

这是关于jsfiddle 的问题

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

由于balance是异步的,您不能直接从中返回。您需要在then回调中设置您的作用域值。

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