使用工厂AngularJS

时间:2015-11-23 10:21:49

标签: javascript angularjs

我正在开发一个应用程序,我在其中调用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并加载数据。

0 个答案:

没有答案