我创建了两个工厂,并从第二个工厂调用第一个工厂,在 Controller 中使用第二个工厂,但我不是以 JSON 形式获取数据,而是以 $$State 形式获取数据。 我是 angularJS 的新手,尝试了很多方法但无法解决,请帮忙。
app.factory('userDetails', ['APIService', '$q', function (APIService, $q) {
getDetails: function () {
var deferred = $q.defer();
var getFunc = function () {
APIService.doGetCall('Masters/employee/username/tarun')
.then(
function (data)
{
deferred.resolve(data);
},
function (data, status, headers, config)
{
deferred.reject('There was an error creating object'); })
return deferred.promise;
}
var a = getFunc();
return a;
}
}
vm.user = userDetails.getDetails();
console.log("user",vm.user);
响应如下代码片段
最佳答案
您应该使用 .then
函数来获取响应。相反,我想说你不需要创建额外的 promise ,它是一种反模式
。您可以直接利用 doGetCall
方法返回的 promise 。
app.factory('userDetails', ['APIService', '$q', function(APIService, $q) {
getDetails: function() {
var getFunc = function() {
return APIService.doGetCall('Masters/employee/username/tarun');
}
var a = getFunc();
return a;
}
}]);
vm.user = userDetails.getDetails().then(function(response){
console.log(response.data);
vm.user = response.data;
console.log("user", vm.user);
}, function(error){
console.log(error)
}).catch(exceptionHandler);
关于javascript - AngularJS 工厂返回 State 对象而不是来自 Promise 的 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39654836/