我正在开发一个应用程序,我在其中调用Web服务并获得响应。我在2个不同的模块中使用该响应。在我使用的第一个模块中,在第二个模块中,我正在进行一些格式化并使用它。
我创建了一个获取数据的服务,如下所示
angular.module('myApp').factory('getData',function($http, $q, restURLS) {
var getData= {};
getData.getTree = function () {
var deferred = $q.defer();
$http.get(restURLS.getTree).
success(function (data) {
deferred.resolve(data);
}).error(deferred.reject);
return deferred.promise;
};
return getData;
});
用于服务响应我创建了另一个工厂,如下所示
angular.module('myApp').factory('tree', function($http, $q, restURLS, getData, messages) {
var tree= {};
tree.hierarchy = {};
tree.formattedHierarchy = {};
function formatHierarchy(data) {
//some formatting on data.
tree.formattedHierarchy = data;
}
function callTree() {
getData.getTree()
.then(function (data) {
tree.hierarchy = angular.copy(data);
formatHierarchy(data);
}).catch(function () {
//error
});
}
callTree();
return tree;
});
我想只调用一次webservice。如果加载了数据,那么工厂('树')应该将数据发送到控制器。否则工厂('树')应该调用webservice并加载数据。