您可以在其他任何内容之前运行Angular服务(或该服务上的某项功能)吗?理想情况下,只要ng-app
被解析。
这是我的用例:我正在编写一个从服务器获取AJAX数据的应用程序,然后以一百种不同的方式解析数据。我想在调用所有控制器之前进行初始的AJAX调用?这样我只需要解析并加载服务中的所有数据,而不必担心更新任何控制器或其他任何内容。
答案 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) - 在创建注入器后执行并用于启动应用程序。只有实例和常量才能注入运行块。这是为了防止在应用程序运行时进一步进行系统配置。
答案 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);
}]);