在fnDrawCallback之后更新DataTables过滤器/排序索引
||
我正在使用timeago jquery插件来格式化数据表列中的时间戳。 ѭ0DataTables选项允许我设置/更新格式化的时间戳,例如:
<abbr class=\"timeago\" title=\"2008-07-17T09:24:17Z\">July 17, 2008</abbr>
变成更具人类可读性的“ 2”。每当有表重绘时都会调用此方法,因此它可用于分页,服务器调用等。
myTable = $(\'#example\').dataTable({
\"fnDrawCallback\" : function () { $(\"abbr.timeago\").timeago() },
\"aaData\" : tableData,
\"aoColumns\" : tableHeadings,
\"oSearch\" : {\"sSearch\" : \"\", \"bRegex\" : true, \"bSmart\" : true, },
});
但是,“ 0”不会更新搜索索引,因此查询“ 5”不会返回任何内容。有没有一种方法可以强制DataTables更新其搜索索引?
编辑
为了清楚起见,我初始化了tableData
和tableHeadings
数组,这些数组是通过JSON传递的。这似乎很好用,因为此数据显示在表中没有任何障碍。问题是,Timeago修改了“ 0”上的DOM,这是在填充表的过滤器/排序索引之后发生的。
// tableHeadings === [\'a\', \'b\', \'DateOne\', \'DateTwo\', ...]
for(i=0; i<tableHeadings.length; i++) {
tableHeadings[i] = { \"sTitle\" : tableHeadings[i], };
if(tableHeadings[i].sTitle.match(/Date/)) {
tableHeadings[i].fnRender = function (c) { // closure over i
return function (o) {
var iso_time = o.aData[c].replace(/\\s/, \"T\") + \"Z\";
return \'<abbr class=\"timeago\" title=\"\'+iso_time+\'\">\'+\'</abbr>\';
}
}(i);
}
}
因此我可以搜索iso_time
,但不能搜索2 years ago
。
没有找到相关结果
已邀请:
0 个回复