Selectize render方法未调用,选项无法渲染问题求助
解决selectize.js远程搜索无选项、render不触发的问题
我帮你排查下代码里的几个关键问题,这应该就是导致render没输出、选项不生成的原因:
1. 字段名不匹配+拼写错误
你的配置里指定的字段和返回数据的字段完全对不上,而且还有拼写错误:
- 你设置了
valueField: "name"、searchField: 'name',但返回的用户数据字段是user_name,selectize找不到对应的字段,自然无法识别选项; - 配置里的
labelfield是拼写错误,正确的应该是labelField(首字母大写的F),这个错误会导致选项的标签无法正常渲染。
2. render函数缺少返回值
当前的render.option函数只做了console.log(item),但selectize要求这个函数必须返回一个HTML字符串来渲染选项内容。没有返回值的话,就算数据加载成功,也不会生成可见的选项,同时render函数的执行时机也会受影响。
修正后的完整代码
$(function () { $('#workers_paid').selectize({ placeholder: "No worker Is selected", valueField: "user_name", // 改为数据里的字段名 labelField : "user_name", // 修正拼写+匹配字段 searchField: 'user_name', // 匹配字段名 render: { option: function (item, escape) { console.log(item); // 现在就能正常打印了 // 返回渲染选项的HTML,escape防止XSS return `<div>${escape(item.user_name)}</div>`; } }, onLoad : function (data) { console.log('数据加载完成', data); }, load: function (query, callback) { // 可以去掉alert,避免干扰交互 let data = JSON.parse('{"users" : [{"user_name": "Humza"},{"user_name": "Humza"},{"user_name": "Humza"},{"user_name": "Humza"},{"user_name": "Humza"},{"user_name": "Humza"}]}'); callback(data.users); } }); });
验证效果
修改后,当你触发搜索(点击选择框或者输入内容),load方法会返回数据,render函数会被调用并打印item,同时选择框里会生成对应的选项。
内容的提问来源于stack exchange,提问作者Humza Malik
相关产品推荐
相关产品推荐

