admin管理员组文章数量:1334868
Can you run an Angular service (or a function on that service) before anything else? Ideally, as soon as ng-app
gets parsed.
Here's my use case: I'm writing an app that gets AJAX data from a server and then parses the data a hundred different ways. I would like to make the initial AJAX call before all the controllers get called? That way I just have all the data parsed and loaded in the service without me worrying about updating any controllers or whatever.
Can you run an Angular service (or a function on that service) before anything else? Ideally, as soon as ng-app
gets parsed.
Here's my use case: I'm writing an app that gets AJAX data from a server and then parses the data a hundred different ways. I would like to make the initial AJAX call before all the controllers get called? That way I just have all the data parsed and loaded in the service without me worrying about updating any controllers or whatever.
Share Improve this question asked Sep 12, 2014 at 9:14 NekkoruNekkoru 1,1653 gold badges12 silver badges19 bronze badges 4- you need to create a new injector, angular.injector() – noypi Commented Sep 12, 2014 at 9:19
- but after ng-app, that would be a different injector -- two different apps now if you initially create an injector. – noypi Commented Sep 12, 2014 at 9:20
- Are you expecting this data to be ready as well, as it's an async call in angular? – Dreamwalker Commented Sep 12, 2014 at 9:31
- if you already have the data before the ngapp is parsed, then you can use providers to configure your services, see my example below. – noypi Commented Sep 12, 2014 at 10:22
2 Answers
Reset to default 6I would like to make the initial AJAX call before all the controllers get called
In Angular method run
is fired before any controller is called
var app = angular.module('myApp',[]);
app.run(function($rootScope){
// ajax call and other stuff
}
In run
method you can do any job like login to Facebook, token validation and so on
Reference
Configuration blocks (aka app.config) - get executed during the provider registrations and configuration phase. Only providers and constants can be injected into configuration blocks. This is to prevent accidental instantiation of services before they have been fully configured.
Run blocks (aka app.run) - get executed after the injector is created and are used to kickstart the application. Only instances and constants can be injected into run blocks. This is to prevent further system configuration during application run time.
docs.angularjs/guide/module
plnkr = http://plnkr.co/edit/WTNuWKSgj0bMR1dtUkto?p=preview
The best way to configure how your services behave is to use providers. so, assuming you already have a mydata from your ajax call, the plnkr above shows a running example...
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);
}]);
本文标签: javascriptAngularjsrunning a service function before anything elseStack Overflow
版权声明:本文标题:javascript - Angular.js - running a service function before anything else? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742370203a2462085.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论