Мой метод run() модуля проверяет, вошел ли пользователь в систему, а затем решает, какой вид загрузить. Представление задвигает с CSS-анимации, но анимация запускается (с помощью - classlist.add()
- Я хочу, чтобы передать событие и получить контроллер в ответ на что:Метод задерживания AngularJS до тех пор, пока не будут загружены контроллеры
var myApp = angular.module('myApp', []);
run(function($rootScope) {
$rootScope.loadView = function(view, animation){
// trigger the animation, which sends the $scope.$broadcast();
}
if(localStorage.loggedIn == 'false') {
$rootScope.loadView('TutorialView');
} else {
$rootScope.loadView( 'InterestView', 'slideUp');
}
}
);
myApp.controller('TutorialCtrl', ['$scope', function($scope){
console.log('loaded');
$scope.$on('TutorialViewCalled', function(event) {
console.log('tutorial class called');
});
}]);
В службе, которая делает анимацию у меня этот код:
console.log('the broadcast is: ' + targetClass+'Called');
$rootScope.$broadcast(targetClass + 'Called');
console.log('broadcast the call');
Мой console.log() выходы выглядеть следующим образом:
the broadcast is: TutorialViewCalled
broadcast the call
loaded
Так что, когда в loadView()
вызывается в run()
, TutorialCtrl
еще не загружен. Любая последующая анимации штраф, который я запуск с кнопками в виде:
the broadcast is: InterestViewCalled
interest class called
broadcast the call
interest class loaded
Так это выглядит как метод run()
работает, прежде чем мои контроллеры готовы. Я не использую run()
правильно, я предположил, что это будет последнее, что нужно запустить, ожидая, когда все остальное будет загружено первым.