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

时间:2013-09-27 20:25:35

标签: javascript angularjs datatable

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

  $(".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()来过滤我的数据表,我收到了这个错误:未捕获的TypeError:无法读取属性'oFeatures 'of null

我在reDraw函数中放了一些断点,发现oSettings(第5557行)为null,在_fnSettingsFromNode函数中我可以看到DataTable.settings [i] .nTable === nTable(第4611行)alwasy返回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] );

2 个答案:

答案 0 :(得分:1)

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

这解决了这个问题:

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

答案 1 :(得分:0)

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