Angularjs.工厂方法return

Angularjs .factory method return

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

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;
}]); 

我问这个问题的主要原因是我想在将数据发送回 controller/$scope 之前修改数据(在 .factory 中)。

谢谢, 格雷格

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

第二个 return 不是来自 getUniqueIndexIDs 的 return,而是来自您的 then 的回调函数。

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

你实际上在做的是承诺链。