通过在.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;
}]); 我提出这个问题的主要原因是,在将数据发送回控制器/$范围之前,我希望修改数据(在.factory中)。
谢谢你,格雷格
发布于 2015-06-07 22:57:56
如果仔细查看getUniqueIndexIDs的代码,就会发现有一个回调。
第二个返回不是来自getUniqueIndexIDs,而是来自then的回调函数。
本质上,您的getUniqueIndexIDs返回由then创建的承诺。这个承诺由返回值then回调函数解决,在您的例子中,该函数是return response。
你所做的本质上是承诺链。
https://stackoverflow.com/questions/30699258
复制相似问题