2013-12-10 2 views
1

Я пишу SPA и использую функцию маршрутизации.AngularJS: событие для загруженного шаблона

$routeProvider 
    .when('/', 
{ 
    controller: 'SimpleController', 
    templateUrl: 'partials/tkm_detailliste.html' 
}) 

В tkm_detailliste.htm У меня есть div с id.

<div id="myGrid"... 

Затем появляется некоторый javascript, где я хочу создать сетку слайков.

grid = new Slick.Grid('#myGrid', dataView, columns, options); 

Но на данный момент Javascript выполняется в DIV ID = «myGrid» не в DOM, так что не могу получить найти. Мое обходное решение - это таймаут.

setTimeout(function() { 
    grid = new Slick.Grid('#myGrid', dataView, columns,options); 
, 100); 

Есть ли более элегантный намеченный способ подключения загруженного шаблона с помощью javascript?

== Обновление =================

Я нашел простое решение.

SimpleController = function($scope) { 
    $scope.$on('$viewContentLoaded', function() { 
     grid = new Slick.Grid('#myGrid', dataView, columns, options); 
    } 
} 
+0

Где вы инициализируете свой slickGrid? – Stewie

+0

Я поместил все в tkm_detailliste.html. Сначала часть html, а затем javascript. – strangeoptics

+0

Ваш связанный с плагином javascript должен находиться внутри директивы и определенно не внутри частичного. – Stewie

ответ

2

провода вверх директива к этому элементу, а затем в функции связи для него можно испускать событие с помощью рамки. $ Испускают («ЭЛЕМЕНТ READY»), чтобы остальные приложений знают, что это хорошо идти.

+0

Звучит правдоподобно, но я пока не продвинулся в angularJS, чтобы написать свои собственные директивы. – strangeoptics

Смежные вопросы