使用$ routeProvider时,Angular应用程序中的dataTables jQuery插件

时间:2014-02-12 21:36:19

标签: jquery angularjs angularjs-directive jquery-datatables angular-routing

我想在我的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>

1 个答案:

答案 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

}