
在使用tabulator的list或select编辑器时,我们经常面临一个场景:下拉选项需要向用户展示易于理解的文本描述(例如“张三老师”),但在后台数据处理或api交互时,我们更需要其对应的唯一标识符(例如“teacherid: 101”)。tabulator的默认行为通常会将选中的值直接显示在单元格中。这意味着如果下拉选项的值是id,单元格就会显示id;如果值是标签,虽然显示友好,但我们却失去了对后端有意义的id。这在需要进行ajax查询或数据持久化时,会造成数据处理上的不便。
例如,在选择一位“教授”时,我们希望单元格显示“Castillo, Juan”,但实际存储在数据模型中的是其ID“3”。当单元格被编辑并保存后,cellEdited事件应该能获取到ID“3”,而不是显示的标签。
解决这一问题的关键在于理解Tabulator中editor和formatter的职责分离。
通过这种分离,我们可以让editor将ID存储到单元格的数据模型中,然后使用一个自定义的formatter来根据这个ID查找并显示对应的标签。
以下是实现“存储ID,显示Label”功能的详细步骤和代码示例。
首先,我们需要一个包含所有可能选项的列表,其中每个选项都包含一个value(用于内部存储的ID)和一个label(用于显示给用户的文本)。
YouMind
AI内容创作和信息整理平台
207
查看详情
// 假设这是从后端获取的教师列表
const teacherList = [
{"value": "3", "label": "Castillo, Juan"},
{"value": "4", "label": "Baracus, Mario"},
{"value": "5", "label": "Smith, John"},
{"value": "6", "label": "Ingalls, Laura"}
];
// 示例表格数据
var tableData = [
{id:1, name:"Billy Bob", age:"12", gender:"male", profesorId:"3"}, // 注意这里存储的是ID
{id:2, name:"Mary May", age:"1", gender:"female", profesorId:"6"},
];在Tabulator的列定义中,我们需要为目标列(例如“Profesor”)进行以下配置:
var table = new Tabulator("#example-table", {
data: tableData, // 设置初始表格数据
columns: [
{title: "Name", field: "name"},
{title: "Age", field: "age"},
{title: "Gender", field: "gender"},
{
title: "Profesor",
width: 200,
field: "profesorId", // 存储ID的字段
editor: "select", // 使用select编辑器
editorParams: {
values: teacherList // 编辑器显示这些选项
},
formatter: function(cell, formatterParams, onRendered) {
const value = cell.getValue(); // 获取单元格存储的ID
if (value) {
// 从teacherList中查找匹配ID的标签
const teacher = teacherList.find(obj => obj.value == value);
return teacher ? teacher.label : ""; // 如果找到,返回标签;否则返回空字符串
} else {
return ""; // 如果没有值,显示为空
}
}
},
],
});cellEdited事件在单元格数据被修改并保存后触发。重要的是,通过上述配置,cell.getValue()在cellEdited事件中将返回我们期望的ID,而不是显示的标签。这使得我们可以方便地使用这个ID进行后续的业务逻辑处理,例如发送AJAX请求。
table.on("cellEdited", function(cell){
// cell - 单元格组件
var rowId = cell.getRow().getData().id; // 获取行ID
var columnField = cell.getColumn().getField(); // 获取被编辑的列字段名
var cellValue = cell.getValue(); // 获取单元格的新值 (这里是教授的ID)
console.log(`行ID: ${rowId}, 列: ${columnField}, 新值 (ID): ${cellValue}`);
// 此时,cellValue就是教授的ID,可以用于AJAX查询
// 例如:
// fetch(`/api/updateProfessor?rowId=${rowId}&profesorId=${cellValue}`)
// .then(response => response.json())
// .then(data => console.log("更新成功", data))
// .catch(error => console.error("更新失败", error));
});通过将Tabulator的editor配置为存储ID,并结合自定义的formatter来显示对应的标签,我们成功地实现了数据存储的精确性与用户界面的友好性之间的平衡。这种模式是处理具有关联ID和显示文本的数据的强大且灵活的方法,广泛适用于各种下拉选择器场景。理解并运用editor和formatter的职责分离,是Tabulator高级应用中的一项基本技能。
以上就是Tabulator列表编辑器:实现值与显示分离的策略的详细内容,更多请关注其它相关文章!
# 鼠标
# 网站怎么推广销售
# 推广公司营销短信
# 铁力网站推广优化
# 融安附近网站建设推广公司
# 山东济南网站优化推广
# 宜昌网络营销网站优化
# 如何建设一个网站
# 兰州网站建设与推广论文
# 泰安网站建设规划书范文
# 青岛网站建设路串串
# 我们可以
# 而不是
# js
# 这是
# 自定义
# 但在
# 的是
# 编辑器
# 单元格
# red
# 区别
# 后端
# ajax
# json
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
鸿蒙单条备忘录如何加密
iPhone 15 Pro如何查看存储空间占用_iPhone 15 Pro存储空间查看教程
漫蛙manwa官网浏览入口_漫蛙漫画网页版访问链接
QQ网页版官方账号登录入口 QQ网页版网页版入口快速导航
行者app怎样导出日志
聚水潭ERP后台管理系统登录 聚水潭ERP官方登录通道
MacBook Pro词典使用指南
C++中std::thread和std::async的区别_C++并发编程与线程与异步任务比较
胃动力不足?试试这5个调理方法
向往的生活小游戏启动处_向往的生活小游戏立即启动
J*aScript模块加载器_RequireJS原理分析
WooCommerce 购物车:始终显示所有交叉销售商品
《宝可梦大集结》S4冠军之路开始时间介绍
抖音手机分身两个账号怎么切换?分身两个系统是一样的吗?
《星露谷物语》克林特好感度事件介绍
怎样让Windows 11的开始菜单恢复经典样式_Open-Shell工具使用指南【怀旧】
顺丰快递怎么查物流_顺丰快递物流信息实时查询操作指南
iCloud官方网站 iCloud网页版在线登录入口
c++如何掌握指针的核心用法_c++指针入门到精通指南
外媒评《燕云十六声》DIY载具新玩法:很像《塞尔达传说王国之泪》!
解决Pandas DataFrame高度碎片化警告:高效创建多列的策略
《深林》冬季章节图文攻略
在Dash应用中自定义HTML标题和网站图标
如何测试您的网站全球打开速度-网站海外测速工
小红书如何引流到私信?引流到私信有用吗?
《饿了么》拼好饭点外卖教程2025
服装短视频如何起号推广?服装短视频起号推广有什么要求?
J*aScript与CSS动画:实现平滑顺序淡入淡出效果并解决显示冲突
VB表达式书写规则解析
《土豆雅思》修改密码方法
苹果手机如何清理系统缓存数据 iPhone非越狱清理垃圾文件的技巧【系统优化】
汽水音乐网页版登录 汽水音乐网页端官方入口
不吃碳水化合物是健康减肥的好办法吗
Python测试中模块导入路径解析的最佳实践
解决Go encoding/json 将JSON大数字解析为浮点数的问题
C++如何实现单例模式_C++线程安全的单例模式写法
《糖豆》添加舞曲方法
Pandas中基于动态偏移量实现DataFrame列值位移的策略
稻壳阅读器官方直达网址链接 稻壳阅读器文档阅读平台主页资源入口
阿里云共享相册入口在哪
掌握产品代码正则表达式:避免常见陷阱与精确匹配
创建快捷方式启动系统保护
windows10怎么更改下载路径_windows10默认存储位置修改教程
《花瓣》创建专辑方法
Yandex世界探索 最新官方免登录入口全知道
《东方财富》条件单关闭方法
c++如何实现一个简单的RPC框架_c++远程过程调用原理与实践
百度小说看书时如何翻页_百度小说手动翻页与自动翻页设置
英国搜索:多数英国人认为语言搜索是未来搜索
折叠屏手机充不进电是什么问题? 特殊结构带来的维修难点
2025-10-03
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。