在页面加载Angularjs之前运行API

时间:2016-10-14 06:25:03

标签: angularjs

我在main.js中使用API​​,API的输出将在使用rootscope的多个页面和控制器上使用。因此,我需要确保在加载任何页面之前运行API。目前,Page首先加载,然后运行API。因此,我无法将API输出绑定到html div。

请帮助!

3 个答案:

答案 0 :(得分:0)

您可以使用角度服务来调用api并注入控制器或使用配置中的提供程序并将数据分配给$rootScope

答案 1 :(得分:0)

做这样的事情。

app.run(function($http, $rootScope){
  $http.get('CALL_TO_YOUR_API')
  .success(function(data, status, headers, config) {
    $rootScope.config = data;
    $rootScope.$broadcast('API-loaded');
  })
  .error(function(data, status, headers, config) {
    // log error
    alert('error');
  });
})

app.controller('MainControl', function($scope, $rootScope) {
  $scope.$on('API-loaded', function(){
//DO your stuff  
  });
});

答案 2 :(得分:0)

您需要在config.js中使用resolve

.state('sampleState', {
                 url: "/sample",
                 templateUrl: "sample.html",
                 controller: 'SampleCtrl',
                 resolve: {
                     companyDetails : function($http) {
                         return $http.get('api/v1/get_sample')
                             .then(function (data) {
                              return data
                             }, function (data) {
                             });
                     }
                 }
             })