datatables - 数据表 mDataProp:val 参数未定义
问题描述
我正在实现一个自定义过滤器值,其中现有的 html 标记被剥离每个适用的表列值。 (原因是过滤数据也考虑了 html 标签内的值,这是不希望的。)
这是一个遗留代码库,使用数据表 v1.9.0。
该表是使用参数构造的,例如 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
属性,表数据填充会出错。看到这个小提琴。
mDataProp
为什么不能val
填充参数?是否mDataProp
支持数组数组作为数据源?(文档对此并不清楚)
解决方案
经过一番挖掘,我发现当mDataProp
用作函数时,它没有对从 javascript 数组变量传递给数据表的数据的任何引用,因此返回undefined
for val
。
这种特殊情况的解决方法是在source
参数中使用直接数组位置引用,具体取决于aTargets
要使用的值。(如果使用,则"aTargets": [ 1 ]
必须调用函数)。source[1]
mDataProp
我没有使用if (type === "set"){}
,因为我无法访问它。
"mDataProp": function(source, type, val) {
var obj = {};
obj.value = source[1]; // Set column value
// Process value as desired ...
obj.value_filter = obj.value + ' foobar';
// Return value for filtering
if (type === 'filter') {
return obj.value_filter;
}
// Return original value for display, sort, etc.
return obj.value;
}
单击更新的小提琴。
推荐阅读
- mdm - MDM 服务器是否仍然可以通过 iOS12 获取 IMEI?
- java - 迁移到 JDK 11 后 Spring Boot 测试中的 Mockito 错误
- ios - ios12后台定位服务停止
- ruby-on-rails - Rails 4.2.10 脏更改触发即使嵌套字段未更改
- android - 禁用 RecyclerView 按钮
- java - 使用 SmsManager 从内部类发送短信不起作用
- ios - 在 iOS 上使用激活事件时,Firebase A/B 测试不计算用户数
- database - 具有大数据集的 Firestore where 子句
- jsf - 如何从包含 Bean 中设置注入的 CDI bean 的 bean 属性?
- spring - 尽管存在弹簧安全依赖性,如何禁用弹簧安全登录页面?