Rob*_*ert 3 angularjs angular-datatables
我有一个控制器,我想在一个watch方法中调用控制器中的Jquery Datatables的destroy函数:
$scope.$watch('model.SelectedWaiver', function() {
if ($scope.model.SelectedWaiver.SurchargeID != null) {
//destroy table here
$scope.getIndecies($scope.model.SelectedWaiver);
}
});
Run Code Online (Sandbox Code Playgroud)
我目前没有以任何方式设置表,因为页面上有两个表:
第一:
<table datatable="ng" dt-options="dtOptions" dt-columns="dtColumns" class="table-bordered">
//stuff
</table>
Run Code Online (Sandbox Code Playgroud)
第二:
<table datatable="ng" id="secondTable" dt-options="dtOptions" dt-columns="dtColumns" class="table-bordered">
//stuff
</table>
Run Code Online (Sandbox Code Playgroud)
我想在用户选择第一个表中的不同行时销毁此表.
jquery等价物:
<script>
$(document).ready(function() {
var table = $('#secondTable').DataTable();
});
$('#selectedWaiver').on('change', function () {
table.destroy();
});
</script>
Run Code Online (Sandbox Code Playgroud)
我如何在角度中执行这部分代码?
有了dtInstance你可以访问数据表API:
$scope.dtInstance = {};
Run Code Online (Sandbox Code Playgroud)
dtInstance在表中添加声明
<table datatable dt-instance="dtInstance" dt-options="dtOptions" dt-columns="dtColumns">
Run Code Online (Sandbox Code Playgroud)
现在你可以使用破坏dataTable
$scope.dtInstance.DataTable.destroy();
Run Code Online (Sandbox Code Playgroud)
angular dataTables有一个扩展的ngDestroy()清理自己的绑定:
$scope.dtInstance.DataTable.ngDestroy();
Run Code Online (Sandbox Code Playgroud)
style标题中仍然有一些(还有一点垃圾),所以也要删除它们(这里是带有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');
}
}
}
Run Code Online (Sandbox Code Playgroud)
演示 - > http://plnkr.co/edit/fQ9YjsbNBNzyYuuvpk6T?p=preview
如果您有多个angular dataTables,请使用多个dtInstances不同的表id's.
| 归档时间: |
|
| 查看次数: |
7522 次 |
| 最近记录: |