我对datatable API很困惑 有时它使用mdata,mrender,有时它使用数据,渲染
我正在使用该片段:
{ mData: 'deadline', "title":"Deadline", "render": function(data, type, row) {
var recurrence = row.rec_description;
return sprintf("<i class='fa fa-calendar'></i> %s <div>(%s)</div>\
<div><i class='fa fa-recycle'></i> Récurrence:%s</div>\
",
moment(data,'X').format('DD/MM/YYYY'), moment(data,'X').locale('fr').fromNow(), recurrence);
} },
哪个工作正常,但是对该列进行排序不起作用: 也许这是因为使用了“mData,render”?
截止日期是一个int(15),但看起来它按html内容排序。
有什么想法吗?
答案 0 :(得分:2)
jQuery DataTables 1.9在选项名称中使用匈牙利表示法(mData
,mRender
),jQuery Datatables 1.10切换到驼峰表示法(data
,render
)但仍然支持选项名称来自1.9。
如果您正在使用jQuery DataTables 1.10,我建议切换到驼峰案例表示法,因为可以在下一个主要版本中删除对匈牙利表示法选项名称的支持。
为了能够按deadline
排序,您需要重写render
功能,如下所示。它仅在显示数据时生成HTML内容,否则对其进行排序则返回原始数据。
{
"data": "deadline",
"title":"Deadline",
"render": function(data, type, row, meta) {
if(type === "display"){
var recurrence = row.rec_description;
data = sprintf(
"<i class='fa fa-calendar'></i> %s <div>(%s)</div>"
+ "<div><i class='fa fa-recycle'></i> Récurrence:%s</div>",
moment(data,'X').format('DD/MM/YYYY'),
moment(data,'X').locale('fr').fromNow(),
recurrence
);
}
return data;
}
},
有关详细信息,请参阅columns.render
。