获取页面加载的详细信息,并在控制器中共享

时间:2015-03-02 11:25:37

标签: javascript jquery angularjs

我需要在应用初始化后立即获取产品数据,使用我在页面的不同部分使用的相同控制器来创建不同的实例。

HTML:

<header class="clearfix" ng-controller="EntityDetailController"
                   ng-init="entity_id={{id}}; get_details('products');">

...
</header>

JS:

    $scope.result = Products.get({
            type : type,
            id : $scope.entity_id
        });
        $scope.result.$promise.then(function(result) {

      });

我需要在某些服务中存储数据,以便稍后我可以与所有控制器共享数据,并且我还需要在收到数据后通知所有控制器,以便他们可以从工厂获取数据。

1 个答案:

答案 0 :(得分:1)

实现目标有两种方法:

  1. 通过在那里注入服务,在。run方法中包含服务部分。因此,当服务调用解析时,数据将在所有控制器上可用。
  2. ng-init

    相比,这种方法更为清晰
    angular.module('yourApp')
     .run(['ProductsService', '$http', function (ProductsService, $http) {
      // make the api request here
    }]);
    
    1. resolve中使用ng-router属性。在app控制器加载之前,发出服务请求。因此,一旦服务结算,控制器将加载。
    2. 默认情况下,一旦注入服务,服务数据将可用于所有控制器。无需广播。