2013-06-02 3 views
3

У меня есть приложение AngularJS, в котором есть некоторые директивы. Приложение загружает некоторые HTML-файлы из внешних HTML-файлов. Проблема заключается в том, что контроллеры в приложении обмениваются сообщениями, а контроллеры элементов HTML, загружаемых из внешних файлов HTML, инициализируются и начинают прослушивать события после того, как другие контроллеры уже начали запускать события. Это звучит примерно так: index.html:Уведомление о загрузке приложения AngularJS

... 
<body ng-controller="bodyController"> 
<ng-include src="page.html"></ng-include> 
</body> 
... 

page.html:

<div ng-controller="divController"></div> 

и bodyController начинает стрелять событий до divController начинает слушать их с DIV из page.html является загружается после инициализации bodyController.

ответ

0

Я думаю, что вы хотите сделать, это использовать ng-view с маршрутизатором:

$routeProvider.when('/', {templateUrl: 'page.html', controller: 'BodyCtrl'}); 

затем в вашем HTML

<div ng-view></div> 
+0

Это может помочь в этом конкретном примере, но у меня есть более одного ng-include на странице, и я загружаю HTML в качестве шаблонов в директивы. Так что простой ng-view не поможет .. Спасибо, хотя .. –

+0

mmh, может быть, загрузите его самостоятельно 'angular.element (document) .ready (function() {...' – Ven

+0

Пробовал это .. Событие срабатывает после все файлы JS загружаются и перед загрузкой HTML. –

0

Я имел некоторые удачи прослушивателя события $ viewContentLoaded от контроллер:

$scope.$on('$viewContentLoaded', function() { 
     // do what you need done on load complete 
    }); 

Не похоже, чтобы определить, существуют ли директивы o n страница завершила загрузку/рендеринг, но должна охватывать другие случаи.