类型检测插件开发

排序插件在对任意数据类型进行排序时非常有用,但是,要真正有用,它们需要一个配套的类型检测插件,该插件会自动扫描列数据并确定排序插件能否对该列中的数据进行排序。虽然排序插件可以通过 columns.type 选项在没有类型检测插件的情况下使用,但是如果自动执行此操作,它们实用性将会大大提高!

类型检测插件附加到 DataTable.ext.type.detect 数组上,并执行一个简单的操作:给定数据是否与类型要求匹配。如果匹配,则应返回类型名称(即一个字符串),否则返回 null

DataTable.ext.type.detect 是一个数组,其排序很重要。DataTables 将从索引 0 开始,并遍历该数组,直到找到与数据匹配的内容。因此,要让您的插件在 DataTables 默认类型检测方法之前执行,请使用 unshift() 将您的函数添加到数组的开头。

考虑以下内容

DataTable.ext.type.detect.unshift( function ( data ) {
    if ( typeof data !== 'string' ) {
        return null;
    }

    var units = data.replace( /[\d\.]/g, '' ).toLowerCase();
    if ( units !== '' && units !== 'b' && units !== 'kb' && units !== 'mb' && units !== 'gb' ) {
        return null;
    }

    return isNaN( parseFloat( data ) ) ?
        null :
        'file-size';
} );

这实际上是一个验证函数——数据是否为给定类型。在本例中,我们检查该列是否包含适用于 文件大小排序插件 的文件大小数据。第一个检查是确保我们正在检查的是字符串,第二个检查是确保它有单位,最后一个检查是确保数据包含有效的数字。

当所有三个检查都通过时,将返回 file-size,这样 DataTables 就知道此数据点对于 file-size 数据类型是有效的。

现有插件

您可能会发现其他 DataTables 用户已经创建了满足您要求的插件。插件已 发布在此站点 上,也可在 DataTables CDN 上使用。

发布您的插件

如果您为 DataTables 创建了一个类型检测插件,请 告诉我们!。其他人可能会从您的插件中受益,我(以及整个社区)将非常感谢您的贡献。