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
。
你实际上在做的是承诺链。
我已经能够通过在 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
。
你实际上在做的是承诺链。