Angular.js - 在其他任何事情之前运行服务功能?

时间:2014-09-12 09:14:08

标签: javascript ajax angularjs

您可以在其他任何内容之前运行Angular服务(或该服务上的某项功能)吗?理想情况下,只要ng-app被解析。

这是我的用例:我正在编写一个从服务器获取AJAX数据的应用程序,然后以一百种不同的方式解析数据。我想在调用所有控制器之前进行初始的AJAX调用?这样我只需要解析并加载服务中的所有数据,而不必担心更新任何控制器或其他任何内容。

2 个答案:

答案 0 :(得分:6)

  

我想在调用所有控制器之前进行初始的AJAX调用

在Angular方法中,run在调用任何控制器之前被触发

var app = angular.module('myApp',[]);

app.run(function($rootScope){
  // ajax call and other stuff
}

run方法中,您可以执行任何工作,例如登录Facebook,令牌验证等等


参考

  

配置块(又名app.config) - 在提供程序注册和配置阶段执行。只有提供程序和常量才能注入配置块。这是为了防止服务在完全配置之前意外实例化。

     

运行块(又名app.run) - 在创建注入器后执行并用于启动应用程序。只有实例和常量才能注入运行块。这是为了防止在应用程序运行时进一步进行系统配置。

docs.angularjs.org/guide/module

答案 1 :(得分:0)

plnkr = http://plnkr.co/edit/WTNuWKSgj0bMR1dtUkto?p=preview

配置服务行为方式的最佳方法是使用提供程序。所以,假设您已经从ajax调用中获得了一个mydata,上面的plnkr显示了一个正在运行的示例......

  myapp.config(['sayHelloProvider',function(sayHelloProvider){

    // assuming your ajax retrievies mydata
    var mydata = angular.fromJson(  angular.element(document.getElementById('mydata')).html() );

    // configure service
    sayHelloProvider.SetMessage("Olah! rate is=" + mydata.rate);


  }]);