5

我想在我的Angular應用程序中使用dataTables jQuery插件,但面臨着Angular路由的問題。

我初始化$(document).ready中的dataTables並使用Angular $ routeProvider來導航我的視圖。當更改視圖然後再返回到表時,dataTable未運行。

該表中填充了來自多個ng-repeat指令的對象。這個代碼不包括在下面,因爲它是一個非常龐大的表。

在Angular應用程序中通過指令,控制器或在$(document).ready(function())中像現在這樣初始化dataTables的首選方法?

我試過這個指令,但從來沒有得到它的工作: http://jsfiddle.net/TNy3w/2/ 我應該繼續這條道路嗎?

dataTable的初始化:

$(document).ready(function() { 
oTable = $('#t').dataTable({ 
    "bSort": false, 
    "bFilter": true, 
    "bInfo": false, 
    "sScrollY": "500px", 
    "sScrollX": "10%", 
    //"sScrollXInner" : "150%", 
    "bScrollCollapse": true, 
    "bPaginate": false, 
}); 
new FixedColumns(oTable); 
}); 

我的表:

</table id="t"> 
<..... TABLE CODE .....> 
</table> 

回答

2

我建議你看看這個一屁股。我剛剛開發了這個代碼。這是原生的角度和易於理解。它是動態的,它是一個很酷的桌子。

http://plnkr.co/edit/pmCjQL39BWWowIAgj9hP?p=preview

我個人認爲,你與你正在使用..代碼組合在和自己的問題是否有機會,你會放棄使用jQuery的一起?當我第一次開始使用ng時,我在很多jQuery中混合使用,這讓我非常頭疼。

如果你想繼續使用jQuery ....

我的猜測是,你的角度應用和jQuery不說話。

路由提供者加載一個部分。爲了從jQuery調用一個函數,你必須從你的Angular控制器的範圍中調用它,或者你必須將由jQuery所做的更改應用到作用域。

如果您在路由提供程序中加載部分文件,則不會觸發文檔就緒事件。您可以將文檔就緒代碼存儲到函數中,並在控制器或角函數中調用它。坦率地說,把它們結合起來很可怕。

我構建了一個項目,結合了kineticjs,jQuery和angular,我不得不從角函數中調用我所有的jQuery函數,以使其全部工作。

所以你需要沿着這些路線的東西..

這在你的角度應用..

$scope.angularFunction = function() { 

    JQueryfunction(); 

} 

這不是角..

JQueryfubction() { 

    // your jQuery function logic 

} 
+0

我結束了消除jQuery的數據表並寫了我自己的「pluging」與datatables功能。問題解決了。感謝您的回覆! – rilar

相關問題