Angular DataTable不填充DTInstance

时间:2015-11-29 07:54:39

标签: angularjs datatables angular-datatables

我没有在渲染后填充我的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>

5 个答案:

答案 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引用该实例。但事实并非如此。在我的情况下,解决方案是摆脱多余的图层,而只使用一个表。