在启动angular度应用程序时执行代码

有什么方法可以在我的AngularJS应用程序启动时执行一些JavaScript代码? 我有一些常见的代码,我需要确保在任何应用程序指令/控制器之前运行。 我不想绑定到路由和ng-view ,我需要这是任何ng-app的通用解决scheme。

我以为我可以使用模块configuration,我真的尝试过,但我试图调用一个服务,这似乎无法访问模块负载。

你可以这样做,

 var app = angular.module('myApp',[]); app.run(function($rootScope) { //..... }); 

简洁版本

您需要使用module.run(initializationFn)函数,其中实际的方法可以依赖于服务。 您可以按照惯例注入依赖项:

 var app = angular .module('demoApp', []) .run(['$rootScope', function($rootScope) { $rootScope.bodyClass = 'loading'; // Etc. Initialize here. }]); 

这个例子的初始化依赖于$rootScope ,但是你也可以注入服务等等。

更长的版本

相关的module.run文档相当简洁,其他(优秀的)答案也是如此。 让我把它合并成一个更详细的例子,它也展示了如何在你的initializationFn注入一个factory创build的服务:

 var app = angular.module('demoApp', []); // Service that we'll also use in the .run method app.factory('myService', [function() { var service = { currentItem: { started: new Date() } }; service.restart = function() { service.currentItem.started = new Date(); }; return service; }]); // For demo purposes app.controller('demoCtrl', ['$scope', 'myService', function($scope, myService) { $scope.header = 'Demo!'; $scope.item = myService.currentItem; $scope.restart = myService.restart; }]); // This is where your initialization code goes, which // may depend on services declared on the module. app.run(['$window', 'myService', function($window, myService) { myService.restart(); $window.alert('Started!'); }]); 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app="demoApp" ng-controller='demoCtrl' ng-cloak> <h1>{{ header }}</h1> <p>Current item started: {{ item.started }}</p> <p><button ng-click="restart()">Restart</button></p> </div> 

您可以使用Module API中的“运行”function: http : //docs.angularjs.org/api/angular.Module

这个代码将在注入器创build后执行,所以你应该能够得到你正在使用的服务。

Yor控制器就像一个函数,在控制器的底部添加一个调用函数,并且你有一个启动函数!