我没有在渲染后填充我的DtInstance。任何人都面临这个问题。
<div ng-controller="InventoryTableController as vm">
<table datatable="" dt-options="vm.dtOptions" dt-columns="vm.dtColumns"
dt-instance="vm.dtInstance"
class="display table table-bordered table-striped table-hover"></table>
</div>
答案 0 :(得分:4)
我能够通过https://github.com/l-lin/angular-datatables/issues/365
修复它问题是由于我像这样初始化了dataHolder
vm.dtInstance = {};
我将其更改为vm.dtInstance = null;
时修复了
即使vm.dtInstance = undefined
也不会工作。
答案 1 :(得分:3)
对我来说甚至vm.dtInstance = null;不工作。 我最终浏览了该指令的源代码,发现dt-instance也可以是一个setter函数。这解决了我的问题。
vm.setDTInstance = function(dtInst){
vm.myTable = dtInst;
};
答案 2 :(得分:3)
在这里加我2美分。
对我来说,问题是由线程中的@rosshays解决方案解决的:https://github.com/l-lin/angular-datatables/issues/345
2017年12月4日更新: 根据@trainoasis建议,我将解决方案复制到此处。
在您的控制器中
<?php
// Register Custom Taxonomy
function custom_taxonomy_Hunt() {
$labels = array(
'name' => 'Hunts',
'singular_name' => 'Hunt',
'menu_name' => 'Hunt',
'all_items' => 'All Hunts',
'parent_item' => 'Parent Hunt',
'parent_item_colon' => 'Parent Hunt:',
'new_item_name' => 'New Hunt Name',
'add_new_item' => 'Add New Hunt',
'edit_item' => 'Edit Hunt',
'update_item' => 'Update Hunt',
'separate_items_with_commas' => 'Separate Hunt with commas',
'search_items' => 'Search Hunts',
'add_or_remove_items' => 'Add or remove Hunts',
'choose_from_most_used' => 'Choose from the most used Hunts',
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_nav_menus' => true,
'show_tagcloud' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'carhunt' )
);
register_taxonomy( 'carhunt', 'product', $args );
register_taxonomy_for_object_type( 'carhunt', 'product' );
}
add_action( 'init', 'custom_taxonomy_Hunt' );
?>
并在您的HTML中
$scope.nested = {};
$scope.nested.dtInstance = {}
答案 3 :(得分:2)
我正在使用
.withOption('serverSide', true).withFnServerData(getDataFromServer)
我遇到了同样的问题,但是使用以下代码解决了这个问题:
<强>控制器强>
$scope.dtInstance = {};
$scope.dtIntanceCallback = function (instance) {
$scope.dtInstance = instance;
}
$scope.dtRebind = function () {
$scope.dtInstance.DataTable.draw()
}
<强> HTML 强>
<table datatable dt-instance="dtInstanceCallback"></table>
<button ng-click="dtRebind">Rebind</button>
答案 4 :(得分:0)
触发此事件的另一种方法是使用<... ng-repeat="table in tables"> <table datatables="ng" dt-instance="dtInstance" ... >
遍历一系列表。当有多个表时,dtInstance
可能不会引用您期望的表也就不足为奇了。
但是,当您知道集合中始终只有一个表时,您可能希望dtInstance
引用该实例。但事实并非如此。在我的情况下,解决方案是摆脱多余的图层,而只使用一个表。