簡體   English   中英

AngularJS從工廠到控制器的Promise返回值

[英]AngularJS return value from factory to controller out of Promise

我在.factory中將HTTP請求設置為Promise,並希望將結果發送到控制器。 但是,我一直堅持將數據從承諾中轉移到我可以使用的地方。

.controller

.controller('MainCtrl', function ($scope, Main, User) {
    $scope.feedResult = function () {
        var feeds = [];
        return Main.feed(key).success(function (data, status, headers, config) {
            for (var i = 0; i < data.length; i += 1)
            {
                feeds.push(data[i]);
            }
            return feeds;
        }).error(function (data, status, headers, config) {
            console.log("This was an error back from the server");
            console.log(data);
            return data;
        });
    }();
})

和.factory

        feed: function (token) {
            return $http({
                url: 'http://myserver.com/feed',
                method: 'GET',
                data: {
                    auth_code: token,
                    per_page: 10
                }
            }).success(function (data, status, headers, config) {
                for (var i = 0; i < data.length; i += 1)
                {
                    feeds.push(data[i]);
                }
                return feeds;
            }).error(function (data, status, headers, config) {
                console.log("This was an error back from the server");
                console.log(data);
                return data;
            });
        },

不管我如何嘗試將事情放到范圍內,我似乎總是以promise對象告終。 有人可以幫我嗎?

成功或錯誤方法將始終返回一個承諾(它將您的返回值包裝到一個新的承諾中)。 您應該在成功/錯誤回調中設置作用域上的值:

.controller('MainCtrl', function ($scope, Main, User) {
    $scope.feedResult = [];
    Main.feed(key).success(function (data, status, headers, config) {
        for (var i = 0; i < data.length; i += 1)
        {
             $scope.feedResult.push(data[i]);
        }
    }).error(function (data, status, headers, config) {
        console.log("This was an error back from the server");
        console.log(data);
        $scope.feedResult = data;
    });
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM