制表器有几个内置的单元格格式化程序,如文档中所述 - http://tabulator.info/docs/4.0/format#format
我们知道我们可以像这样构建自定义格式化程序:
var myCustomFormatter=function(cell, formatterParams, onRendered){
return "Mr" + cell.getValue();
}
然后在列参数中像这样使用它:
{title:"Name", field:"name", formatter:myCustomFormatter}
虽然制表程序格式化程序被"用作"字符串:
{title:"Name", field:"name", formatter:"textarea"}
我们的目标是通过扩展现有格式化程序,将"myCustomFormatter"添加到参数列的可用选项列表中。
为什么?我们正在构建一些动态的东西,列参数将填充一个变量,该变量从 JSON 字符串接收他的值。像这样:
var jc='[{"title":"Name", "field":"name", "formatter":"myCustomFormatter"}]';
var c=JSON.parse(c);
var table = new Tabulator("#tbdiv", {columns: c});
但是此代码不起作用,因为"myCustomFormatter"(作为字符串(在格式化程序参数中不可用。
结论,制表器格式化程序可以使用新的单元格格式化程序进行扩展(不更改原始代码(吗?
如果没有,任何想法我们如何填写列参数,以便它使用我们的自定义格式化器?
谢谢
您可以使用制表器原型上的extendModule函数扩展模块:
//add uppercase formatter to format module
Tabulator.prototype.extendModule("format", "formatters", {
uppercase:function(cell, formatterParams){
return cell.getValue().toUpperCase(); //make the contents of the cell uppercase
}
});
//use formatter in column definition
{title:"name", field:"name", formatter:"uppercase"}
您需要确保在包含源文件之后但在创建第一个表之前扩展制表器。
有关此内容的完整文档可在制表器网站文档
中找到