Kısa versiyon
Sen gerçek yöntem hizmetlerine bağlı olabilir module.run(initializationFn)
fonksiyonunu kullanmak gerekir. Sen her zamanki gibi bağımlılıkları enjekte edebilir
var app = angular
.module('demoApp', [])
.run(['$rootScope', function($rootScope) {
$rootScope.bodyClass = 'loading';
// Etc. Initialize here.
}]);
örnek $rootScope
üzerinde başlatma bağımlı vardır, ama aynı zamanda, hizmet enjekte vb
daha uzun sürüm
The relevant module.run
documentation, oldukça kısa ve öz olarak diğer (mükemmel) cevaplar. Bana bir daha ayrıntılı örnek haline birleştirmek edelim, o da senin initializationFn
bir factory
oluşturulan hizmet enjekte etmek gösterir:
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>
Bu bana denetleyicileri içine aramalar için yarış koşulları verir. Fonksiyon yürütüldüğünde tüm kontrol cihazlarının hazır olmadığı görülmektedir. – Dan
@Dan, denetleyicilerinizde çözüm kullanıyor musunuz? – lyyons
@lyyons Bu sadece rota için işe yaramaz mı? – Dan