我已经使用状态提供程序创建了一个状态,并且我使用了resolve
,我使用工厂调用了 api。
.state('Test', {
url: '/Test/:testId',
templateUrl: TEMPLATE_URL + 'Test/test.html',
controller: "testController",
resolve: {
getTest : function($stateParams,TestFactory){
return testFactory.getTest($stateParams.testId);
},
testId: ['$stateParams', function ($stateParams) {
return $stateParams.testId;
}]
}
});
})
我创建了一个具有返回对象的函数(getTest)的工厂
getTest : function(parmTestId){
var deferred = $q.defer();
$http.get(API_URL + "Test/testById?testId="+parmTestId).success(deferred.resolve)
.error(deferred.resolve);
return deferred.promise;
}
我创建了控制器,注入提供者
.controller("testController", function($scope,$rootScope,$http,getTest,testId, TestFactory ){
console.log(getTest); // its work perfectly and return json object
var returnObj = TestFactory.getTest(testId); //I called factory function
console.log(returnObj)//its not return object its return Promiss
}
当我通过状态解析调用时,我无法理解它返回的 json 对象是从 api 调用返回的,但是当我在控制器中调用它时,它不会返回 json 对象。它的回归
Promise {$$state: Object}
$$state: Object
status: 1
value: Object
__proto__: Object
__proto__: Promise
在值中有我想要的实际结果(json object)问题在这两种情况下,为什么它返回不同的对象?
先感谢您。如果你不明白这一点,我会在评论中讨论。