数据表mDataProp:val param undefined

时间:2018-05-23 19:14:55

标签: datatables

我正致力于实现自定义过滤器值,其中为每个适用的表列值剥离现有的html标记。 (原因是过滤数据也会考虑html标记内的值,这是不可取的。)

这是一个遗留代码库,使用数据表v1.9.0。

该表使用params构建,例如aoColumns,aaData。

表数据使用数组:即:

aaData = [
   ['12450','<a href='javascript:doStuff(123, 456)>value2</a>', 'User 1', '$500'],
   ['12455','...','...','...'],
   ['12462','...','...','...'],
   ['12314','...','...','...'],
   [...],
   ...
]

表格必须使用mDataProp表示适用的aTargets 功能签名是:

tableOptions["aoColumnDefs"] = [
    {
        "mDataProp": function (source, type, val) {
            console.log("source ", val); // This returns: row array
            console.log("type ", type); // This returns each type (except for 'set')
            console.log("val ", val); // This returns: undefined
            var obj = {};
            var temp = angular.element('div');
            temp.innerHTML = val;
            if (type === 'set') {
                obj.value = val;
                obj.value_filter = temp.textContent || temp.innerText;
                console.log(obj.value_filter);
                return;
            } else if (type === 'filter') {
                return val;
            } else if (type === 'sort') {
                return val;
            }
            return obj.value;
        },
        "sDefaultContent": '',
        "aTargets": [ 1 ]
    },
]

问题是val内的mDataProp参数始终返回undefined,因此如果不是sDefaultContent属性,表数据填充会出错。 请参阅this fiddle

为什么mDataProp无法填充val参数? mDataProp是否支持数组数组作为数据源? (文档不清楚)

1 个答案:

答案 0 :(得分:0)

经过深入挖掘后,我发现当mDataProp用作函数时,它没有对从javascript数组变量传递给数据表的数据的任何引用,因此返回{{1} } undefined

此特定情况的解决方法是在val参数中使用直接数组位置引用,具体取决于要使用的source值。 (如果使用aTargets,则必须在"aTargets": [ 1 ]函数中调用source[1]

我没有使用mDataProp,因为我无法访问它。

if (type === "set"){}

点击updated fiddle