Angular.js-先运行服务函数,然后再运行其他函数

Angular.js - running a service function before anything else?

本文关键字:函数 然后 再运行 其他 服务 js- 运行 Angular      更新时间:2023-09-26

您能在之前运行Angular服务(或该服务上的函数)吗?理想情况下,一旦ng-app被解析。

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

我想在所有控制器被调用之前进行最初的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

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);

  }]);