角度数据表 fnDraw() 不起作用

Posted

技术标签:

【中文标题】角度数据表 fnDraw() 不起作用【英文标题】:Angular datatable fnDraw() doesn't work 【发布时间】:2013-10-04 06:25:09 【问题描述】:

我在一个角度指令(我的指令:https://gist.github.com/jianbo/6734624)中使用数据表库,类似于 Ventura 建议的 Using Jquery Datatable with AngularJs。我的 fnDraw 有问题,在我的应用程序中,我有多个网页,每个网页都有一个数据表,因为我使用 Angular 页面根本不会重新加载。

  $(".resource-filter").live "change", (event) ->
    scope.dataTable.fnDraw() // This is where error triggered 

  $("#sSearch").live "keyup", (event) ->
    scope.dataTable.fnDraw() // This is where error triggered

我的数据表仍然可以在每一页上加载数据,但是在访问了多个页面之后,然后尝试调用 scope.dataTable.fnDraw() 来过滤我的数据表,我得到了这个错误:Uncaught TypeError: Cannot read property 'oFeatures ' 为空

我在reDraw函数中放了一些断点,发现oSettings(第5557行)为空,在_fnSettingsFromNode函数中我可以看到DataTable.settings[i].nTable === nTable(第4611行)总是返回false ,我可以发现 DataTable.settings 包含多个数据表,但 for 循环与当前的不匹配

有什么想法吗?

    function _fnSettingsFromNode ( nTable )
     
      for ( var i=0 ; i<DataTable.settings.length ; i++ )
      
        if ( DataTable.settings[i].nTable === nTable )
        
          return DataTable.settings[i];
        
      

      return null;
     

    oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );

【问题讨论】:

【参考方案1】:

似乎是当有多个Datatable实例时,“scope.dataTable”无法引用当前的Datatable。

这解决了问题:

scope.dataTable.fnSettings().oInstance.fnFilter()

【讨论】:

【参考方案2】:

尝试将.live 更改为.on,因为.live 已被弃用。

【讨论】:

以上是关于角度数据表 fnDraw() 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

角度智能表 - 分页对刷新数据对象不起作用

使用具有角度7平均堆栈的multer中间件上传文件不起作用

角度 POST 请求不起作用但 GET 工作正常

分页在角度 7 中不起作用。(我使用角度材料)

角度 6 动画 *ngIf,过渡不起作用

验证器撰写角度似乎不起作用