【发布时间】:2015-11-04 05:16:32
【问题描述】:
我有一个带有 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.mails 中的最终值为:
{"$$state":{"status":0}}
我知道 HTTP 请求可以正常工作,这要归功于其中的 console.log。
我做错了什么?我可以使用 $rootScope 来返回值,它可以工作,但这是一个糟糕的编程策略。
【问题讨论】:
标签: javascript angularjs