如果它已经存在,我希望能够从角度服务返回预加载的数据,如果不是,我想从 Web 服务获取数据。
显然,其中一个操作是同步的,另一个不是,所以我想以异步方式包装简单的返回,这样我的控制器中就不必有很多 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
服务中的值是我所期望的数组。但是,当我data
在调用deferredJobs.resolve()
它之后检查控制器中的值时,它是一个带有状态代码详细信息的 http 响应对象和一个data.data
包含数组的单独属性。这仍然意味着我必须在控制器中有 if...else 代码来检查data
是数组还是 http 响应。
如何将数组传递回我的控制器?