1
我希望能夠從角度服務返回預加載的數據,如果它已經存在,如果它不是我想要從網絡獲取數據服務。
很明顯,其中一個操作是同步的,另一個不是這樣,我想以異步方式包裝簡單的返回,這樣我就不必在控制器中有很多if ... else塊。
我試過使用延期API如下。
worksOrdersApp.factory("WorksOrderService", function ($http, $q) {
var _jobs = [];
var newWorksOrders = function() {
var deferredJobs = $q.defer();
if (_jobs.length === 0) {
return $http.get('/api/WorksOrders/GetNew').success(function(data) {
deferredJobs.resolve(data);
});
} else {
deferredJobs.resolve(_jobs);
}
return deferredJobs.promise;
};
return {
getNewWorksOrders: newWorksOrders,
};
});
然後在我的控制器,它應該是調用的一個簡單的例子...
WorksOrderService.getNewWorksOrders().then(function (data) {
$scope.values = data;
});
這最初似乎工作的data
在服務的價值是我期望的數組。但是,當我在調用deferredJobs.resolve()
之後檢查控制器中的data
的值時,它是一個http響應對象,其中包含狀態碼的詳細信息以及包含該數組的單獨data.data
屬性。這仍然意味着我必須有控制器中的if ... else代碼來檢查data
是數組還是http響應。
如何將數組傳回控制器?