2013-12-10 19 views
1

我編寫SPA並使用路由功能。AngularJS:裝入模板的事件

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

在tkm_detailliste.htm我有一個帶有ID的div。

<div id="myGrid"... 

然後來了一些JavaScript,我想instanciate slik網格。

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