Angular HTTP承诺返回空
Angular HTTP promise returns empty
我有一个HTTP GET请求的工厂,我使用承诺作为文档说我应该,使用$q服务,但它返回一个空的承诺:
App.factory('dataFactory', ['$rootScope','$http','$q', function($rootScope,$http,$q) {
// Objeto del factory
var fac = {};
// Funcion que obtiene un mensaje completo
fac.obtenerListaMensajes = function(compania,userhid){
var deferred = $q.defer();
$http({
method: 'GET',
url: urlListaMensajes,
params: {company:compania,userhid:userhid}
}).
then(function(response) {
deferred.resolve(response.data.messages);
console.log(JSON.stringify(deferred.promise));
}, function(error) {
deferred.reject(error);
});
return deferred.promise;
};
return fac;
}]);
控制器:
App.controller('MailFolderController', ['$scope','$rootScope','dataFactory', '$stateParams', function($scope, $rootScope, dataFactory, $stateParams) {
// Variables de PRUEBA
var user_prueba = 'MTQzMjU4NjUyNDcxMzczNzQwNjE3MTg1ODMxMDY5OTQ2';
var company_prueba = 'development';
$scope.mails = dataFactory.obtenerListaMensajes(company_prueba,user_prueba);
}]);
$scope中的最终值。邮件是:
{"$$state":{"status":0}}
我知道一个事实,HTTP请求工作正常感谢它里面的console.log。
我做错了什么?我可以使用$rootScope返回值,它可以工作,但这将是一个糟糕的编程策略。
在控制器中使用service的正确方法是:
dataFactory.obtenerListaMensajes(company_prueba, user_prueba).then(function(data) {
$scope.mails = data;
});
你也可以通过摆脱冗余的虚拟延迟对象来改善服务,你不需要它,因为$http
已经返回承诺:
App.factory('dataFactory', ['$rootScope', '$http', '$q', function ($rootScope, $http, $q) {
// Objeto del factory
var fac = {};
// Funcion que obtiene un mensaje completo
fac.obtenerListaMensajes = function (compania, userhid) {
return $http({
method: 'GET',
url: urlListaMensajes,
params: {
company: compania,
userhid: userhid
}
}).
then(function (response) {
return response.data.messages;
});
};
return fac;
}]);
相关文章:
- 谷歌日历 api 调用可以在角度工厂内返回承诺吗?
- JavaScript - 返回承诺和/或调用回调
- 在同一函数中解析承诺后返回承诺
- 承诺返回承诺
- 承诺返回承诺
- 如何从多个承诺中返回承诺
- 如何使用在 AngularJS 中返回承诺的$resource测试工厂
- 这是一种常见的模式吗?(返回数据而不是返回承诺)
- 使用 Jasmine 2.4.* 测试返回承诺的服务
- 承诺回调返回承诺
- 可以 Angular 模板调用函数返回承诺
- 链接返回承诺数组的函数
- 使用属性从指令返回承诺
- 节点.js SQLite 3 返回承诺
- 从延迟的回调中返回承诺
- 返回承诺与返回承诺内未定义之间的区别
- 返回承诺值
- 如何在返回承诺的服务中创建 reset() 方法
- 从顺序 jQuery ajax 调用返回承诺
- 在 Redux Thunk 发货后从商店返回承诺