我已经能够通过添加"返回"来使这个.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内)。
谢谢你, 格雷格
答案 0 :(得分:1)
如果仔细查看getUniqueIndexIDs
的代码,您会发现有回调。
第二次返回不是从getUniqueIndexIDs
返回,而是从then
的回调函数返回。
基本上,您的getUniqueIndexIDs
会返回then
创建的承诺。此承诺由返回值then
回调函数解决,在您的情况下为return response
。
你基本上做的是承诺链接。