我正致力于实现自定义过滤器值,其中为每个适用的表列值剥离现有的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
是否支持数组数组作为数据源? (文档不清楚)
答案 0 :(得分:0)
经过深入挖掘后,我发现当mDataProp
用作函数时,它没有对从javascript数组变量传递给数据表的数据的任何引用,因此返回{{1} } undefined
。
此特定情况的解决方法是在val
参数中使用直接数组位置引用,具体取决于要使用的source
值。 (如果使用aTargets
,则必须在"aTargets": [ 1 ]
函数中调用source[1]
。
我没有使用mDataProp
,因为我无法访问它。
if (type === "set"){}