gpt4 book ai didi

angularjs - 如何调用angular数据表的销毁函数?

转载 作者:行者123 更新时间:2023-12-01 10:39:02 25 4
gpt4 key购买 nike

我有一个controller,我想在watch方法中调用controller中Jquery Datatables的destroy函数:

      $scope.$watch('model.SelectedWaiver', function() {
if ($scope.model.SelectedWaiver.SurchargeID != null) {
//destroy table here
$scope.getIndecies($scope.model.SelectedWaiver);

}
});

我目前没有以任何方式设置表格,因为页面上有两个表格:

首先:

<table datatable="ng" dt-options="dtOptions" dt-columns="dtColumns" class="table-bordered">
//stuff
</table>

第二个:

<table datatable="ng" id="secondTable" dt-options="dtOptions" dt-columns="dtColumns" class="table-bordered">
//stuff
</table>

我想在用户选择第一个表中的不同行时销毁此表。

jquery 等效项:

<script>
$(document).ready(function() {
var table = $('#secondTable').DataTable();


});
$('#selectedWaiver').on('change', function () {
table.destroy();
});
</script>

我如何用 Angular 来处理这部分代码?

Using this to inject datatables

最佳答案

通过 dtInstance,您可以访问数据表 API:

$scope.dtInstance = {};

添加dtInstance作为表的声明

<table datatable dt-instance="dtInstance" dt-options="dtOptions" dt-columns="dtColumns">

现在你可以销毁dataTable了

$scope.dtInstance.DataTable.destroy();

Angular 数据表有一个扩展 ngDestroy()清理自己创建的绑定(bind):

$scope.dtInstance.DataTable.ngDestroy();

标题中仍然有一些样式(还有一些垃圾),所以也将它们删除(这里是在id为#table的表格上) :

$scope.destroy = function() {
$scope.dtInstance.DataTable.ngDestroy();
var i, ths = document.querySelectorAll('#table th');
for (i=0;i<ths.length;i++) {
ths[i].removeAttribute('style');
}
}
}

演示 -> http://plnkr.co/edit/fQ9YjsbNBNzyYuuvpk6T?p=preview

如果您有多个 Angular 数据表,请使用多个 dtInstances 和不同的表 id's

关于angularjs - 如何调用angular数据表的销毁函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31521000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com