【问题标题】:jQuery DataTable plugin: custom column option & updating default option at run timejQuery DataTable 插件:自定义列选项和在运行时更新默认选项
【发布时间】:2016-05-04 10:07:42
【问题描述】:

我正在为 jQuery DataTable 编写一个小型自定义插件,它通过标准表级别选项启用。我有两个问题:

  1. 能够添加插件随后检索的自定义列定义选项
  2. 将标准 DataTable 列选项设置为在运行时确定的新值。

例如,我会这样定义我的表:

$('#example').DataTable( {
    myPlugin:   true,
    columns: [
      {
        name: 'col1',
        myPluginOption: ['optionVal1', 'optionVal2']
      },
      .
      .
      .
    ]
} );

然后在插件中,我想将一个侦听器附加到“dt.init”事件并在其中执行以下操作:

...
_dtInit: function() {
   this.dt.columns().every(function() {
        //1. retrieve the value of my custom option
        var myOptions = this.myPluginOption; //or this.myPluginOption() ?
        ...
        //2. set a default column option to a new value that 
        //wasn't known at initial definition (e.g.: dataOrder)
        this.dataOrder = [newInt1, newInt2];

   });
}

谢谢!

【问题讨论】:

    标签: jquery plugins datatable


    【解决方案1】:

    找到了一种利用以下事实的方法:将侦听器添加到 DT 事件设置传递给侦听器函数。

    但是,我们需要为此使用原始/旧样式的选项名称。属性名称在内部由 DT 映射到旧名称,并且仅存在于设置对象中的先前选项名称状态。即:orderData 选项作为 aDataSort 存在于设置对象中。这里是完整的参数转换参考:https://datatables.net/upgrade/1.10-convert

    ...
    _dtInit: function(e, settings) {
       $.each(settings.aoColumns, function(index, column) {
           //1. retrieve the value of my custom option
    
           var myOptions = column.myPluginOption;
    
           ...
    
           //2. set a default column option to a new value that 
           //wasn't known at initial definition (e.g.: dataOrder)
           //*** Using old option name for dataOrder here:
    
           this.aDataSort = [newInt1, newInt2]
       });
    }
    
    • 注意,第 2 步的示例在这里可能不是最好的,因为更新可排序顺序会导致表格重新排序已加载的数据并重新绘制。这将更适合加载数据之前的 preInit 侦听器。

    【讨论】:

      猜你喜欢
      • 2012-05-24
      • 1970-01-01
      • 2013-08-29
      • 1970-01-01
      • 2013-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多