我想在我的Angular应用程序中使用dataTables jQuery插件,但是面临Angular路由的问题。
我在$(document).ready中初始化dataTables并使用Angular $ routeProvider来浏览我的视图。当更改视图然后再返回到表时,dataTable没有运行。
该表填充了来自多个ng-repeat指令的对象。下面没有包含此代码,因为它是一个非常庞大的表。
在Angular应用程序中初始化dataTables的首选方法是通过指令,控制器或$(document).ready(function())来摆脱竞争条件,就像我现在一样吗?
我试过这个指令,但从来没有让它起作用: http://jsfiddle.net/TNy3w/2/ 我应该继续走这条路吗?
dataTable init:
$(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>
答案 0 :(得分: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
}