我正在使用 DataTables 创建一个表。初始化表格后,我想更改一些控制其中一列如何呈现的设置,如下所示:
var st = mytable.dataTable().fnSettings();
$.extend(st.aoColumns[2], {
"mRender": function (val, type, row) {
return "xxx";
}
});
但是当我加载页面时,我得到: “对象不是 DataTables.js 中的函数:181(下面标有“这是错误行”):
/* Cache the data get and set functions for speed */
var mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null;
var mData = _fnGetObjectDataFn( oCol.mData );
oCol.fnGetData = function (oData, sSpecific) {
var innerData = mData( oData, sSpecific );
if ( oCol.mRender && (sSpecific && sSpecific !== '') ) {
return mRender( innerData, sSpecific, oData ); <== this is the error line
}
return innerData;
};
似乎某些缓存机制假设 mRender 值在初始化后不会更改,但实际上 DataTables 允许通过 fnSettings 方法进行外部设置操作,该方法明确记录了它用于“外部操作”。
关于如何解决这个问题有什么想法吗?
最佳答案
好的找到了解决方案 - 使用 aoColumnDefs 而不是 aoColumns,并在 aTargets 数组中指定列目标:
var aoColumnDefs = [{
"mRender": function (val, type, row) {
return "xxx";
},
"aTargets":[2]
}];
mytable.dataTable({aoColumnDefs:aoColumnDefs});
关于javascript - 数据表 mRender "object is not a function"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16394230/