【发布时间】:2023-03-02 23:39:01
【问题描述】:
我有一个通过调用 $resource 加载的数据表。它正在执行查询并在视图中的 ng-repeat 中使用返回的值。这一切都很好。问题是我正在尝试使用 DataTables jquery 插件,并且需要在表加载了所有行之后运行该插件,这意味着在 angular 运行 ng-repeat 并使用从 $resource 调用返回的更新值之后.
这是我的控制器代码目前的样子:
$scope.model = {
roles: []
};
$scope.model.roles = $resource('/api/admin/user/role').query();
$scope.$watch('model.roles', function () {
console.log('watch called');
handleDataTables();
});
var handleDataTables = function() {
$('#rolelist').dataTable({
"sPaginationType": "bs_full"
});
};
我认为当表的行已经创建时,手表会被调用,但它似乎没有以这种方式工作。我还尝试在 $resource.query 调用的成功回调中调用 handleDataTables,但这也不起作用。
我可以通过在调用 handleDataTables 之前超时来使其工作,但这只是感觉很脏。
【问题讨论】:
-
如果可能的话,我建议不要在控制器中使用 $watch。有时这是不可避免的,但如果您尝试在更改转发器中集合的实际事件期间处理调用
handleDataTables(),您会遇到更少的问题(并且您会看到更好的性能)。 -
我能够使用重复问题的链接中描述的 onFinishRender 指令。谢谢。
标签: jquery angularjs angularjs-ng-repeat