使用select2,每个列表项有2个必需参数:" id"和" text"。 如果你的id和text都是String类型,那么一切都很好。但是,当我尝试将id设置为Object时,我会收到错误。在控制台中检查,我可以看到id = [" [object Object]"]
我用来生成select2的列表的代码:
var list = [ "apple", "banana", "orange"]
var list = _.map(list, function(each){
return { id: { myName: each, otherData: 1 }, text: each }
});
$(".js-example-basic-single").select2({
data: list
});
我无法在文档的任何地方看到" id"只能是一个字符串而不是一个对象。
是否可以拥有" id"是一个对象?如果是这样,有没有特殊的语法?
答案 0 :(得分:1)
我不知道jquery-select2但只是查看示例代码,你需要这样做:
return [{id: 0, myName: each, otherData: 1}, {id: 1, text: each}];
答案 1 :(得分:1)
ID通常是字符串,有时是数字,因为这些类型很容易比较。我个人不知道select2,但是,我认为它使用id作为dom引用,所以,id必须是字符串。
尝试类似的事情:
var list = ['banana', 'apple', 'orange']
.map((fruit, index) => {type: fruit, id: (Number(index || 0) + 1).toString()})
//.sort() //sort fruits as you want, etc...
;
答案 2 :(得分:0)
我得到了Select2维护者的确认,它需要是最新版本的字符串。 https://github.com/select2/select2/issues/4227
由于id和text必须是字符串,因此添加变量的唯一方法是使对象为:
{id:'string',text:'string',userDefinedKey:'string'}