如何格式化基于 header 过滤器选项的制表符 SELECT?
How can you format a Tabulator SELECT based header filters options?
我们正在使用 Tabulator (4.8.3) 并且在一列上有一个基于 SELECT 的 header 过滤器。这一切都很好,除了我们正在尝试为某些 select 选项添加一些格式。它们以预期的格式显示在 select 下拉列表中。但是,一旦创建了 selection,selected 文本将显示为原始 html(未格式化)。
一个JSfiddlehere说明了我们的意思。创建一个 selection 并查看 selection 文本中显示的格式(例如粗体标签和 non-breaking 空格)。
我们在 Tabulator 中寻找 headerFilterFormatter 或类似的东西,但找不到任何东西。我们还看到了这个 post:
,但为了清理选项文本显示而编写所有这些内容似乎有些矫枉过正。
我们不关心 selected 文本是否格式化,我们只是不希望 html 显示在值中。每次制造 selection 时,我们都可以在外部对其进行消毒,但这似乎不是一个好主意,因为它会紧密耦合所有东西。
有谁知道在 Tabulator 中是否有快速、简单的方法来解决这个问题?
var table = new Tabulator("#table", {
layout: "fitDataFill",
columns: [{
title: "ID",
field: "id"
},
{
title: "Topic",
field: "topic",
width: 120,
headerFilterPlaceholder: "-- Select --",
headerFilter:"select",
headerFilterParams: {values: paramLookup}
},
],
});
var tableData = [{
id: 1001,
topic: "1.0",
},
{
id: 1002,
topic: "1.1",
},
{
id: 1003,
topic: "2.0",
},
{
id: 1004,
topic: "3.0",
},
];
function paramLookup(cell){
return {
"1.0":"<b>1.0</b>",
"1.1":" 1.1",
"2.0":"<b>2.0</b>",
"3.0":"<b>3.0</b>",
};
}
table.setData(tableData);
您面临的问题是您试图为 values 数组中的 select 列表值设置标签样式。 select 编辑器使用输入元素显示 selected 值,因此当您 selecting 一个值时,它会将标签显示为文本。
正确的方法是在标签中包含实际值,然后使用 listItemFormatter 根据需要格式化列表,即将纯文本值存储在标签上并将其显示为 html:
的方式
{
title: "Topic",
field: "topic",
width: 120,
headerFilterPlaceholder: "-- Select --",
headerFilter:"select",
headerFilterParams: {
values: [1.0, 1.1, 1.2],
listItemFormatter:function(value, title){
return "<b>" + title + "</b>";
},
}
},
我们正在使用 Tabulator (4.8.3) 并且在一列上有一个基于 SELECT 的 header 过滤器。这一切都很好,除了我们正在尝试为某些 select 选项添加一些格式。它们以预期的格式显示在 select 下拉列表中。但是,一旦创建了 selection,selected 文本将显示为原始 html(未格式化)。
一个JSfiddlehere说明了我们的意思。创建一个 selection 并查看 selection 文本中显示的格式(例如粗体标签和 non-breaking 空格)。
我们在 Tabulator 中寻找 headerFilterFormatter 或类似的东西,但找不到任何东西。我们还看到了这个 post:
我们不关心 selected 文本是否格式化,我们只是不希望 html 显示在值中。每次制造 selection 时,我们都可以在外部对其进行消毒,但这似乎不是一个好主意,因为它会紧密耦合所有东西。
有谁知道在 Tabulator 中是否有快速、简单的方法来解决这个问题?
var table = new Tabulator("#table", {
layout: "fitDataFill",
columns: [{
title: "ID",
field: "id"
},
{
title: "Topic",
field: "topic",
width: 120,
headerFilterPlaceholder: "-- Select --",
headerFilter:"select",
headerFilterParams: {values: paramLookup}
},
],
});
var tableData = [{
id: 1001,
topic: "1.0",
},
{
id: 1002,
topic: "1.1",
},
{
id: 1003,
topic: "2.0",
},
{
id: 1004,
topic: "3.0",
},
];
function paramLookup(cell){
return {
"1.0":"<b>1.0</b>",
"1.1":" 1.1",
"2.0":"<b>2.0</b>",
"3.0":"<b>3.0</b>",
};
}
table.setData(tableData);
您面临的问题是您试图为 values 数组中的 select 列表值设置标签样式。 select 编辑器使用输入元素显示 selected 值,因此当您 selecting 一个值时,它会将标签显示为文本。
正确的方法是在标签中包含实际值,然后使用 listItemFormatter 根据需要格式化列表,即将纯文本值存储在标签上并将其显示为 html:
的方式{
title: "Topic",
field: "topic",
width: 120,
headerFilterPlaceholder: "-- Select --",
headerFilter:"select",
headerFilterParams: {
values: [1.0, 1.1, 1.2],
listItemFormatter:function(value, title){
return "<b>" + title + "</b>";
},
}
},