Angularjs .factory方法返回

时间:2015-06-07 22:49:17

标签: angularjs methods return factory

我已经能够通过添加"返回"来使这个.factory工作。在Restangular.all语句和响应之前。我的问题是为什么需要那里?为什么我不能回复回复?

app.controller('MainController', ['GetIndexesFromES', '$scope', function(GetIndexesFromES, $scope) {
        $scope.indices = GetIndexesFromES.getUniqueIndexIDs();
        console.log($scope.indices);
}]);

app.factory('GetIndexesFromES', ['Restangular', function GetIndexesFromES (Restangular) {
    var GetIndexesFromES = {};
    GetIndexesFromES.getUniqueIndexIDs = function(){
        return Restangular.all('_stats/index,store').getList().then(function(response) {
            return response
        });
    }
    return GetIndexesFromES;
}]); 

我提出这个问题的主要原因是我想在将数据发送回控制器/ $ scope之前修改数据(在.factory内)。

谢谢你, 格雷格

1 个答案:

答案 0 :(得分:1)

如果仔细查看getUniqueIndexIDs的代码,您会发现有回调。

第二次返回不是从getUniqueIndexIDs返回,而是从then的回调函数返回。

基本上,您的getUniqueIndexIDs会返回then创建的承诺。此承诺由返回值then回调函数解决,在您的情况下为return response

你基本上做的是承诺链接。