这是问题所在,我可以按照如下文档中的说明创建自定义选项:
auto m_iter = accounts_map.find(account);
因此,这将正常创建选项并按预期显示在select2上,这也会触发select2:select事件,并且在触发该事件时我可以读取额外的参数,但是这里出现了问题,我无法访问通过执行以下操作来获得额外的参数:
var option = new Option("my custom option", "myid", true, true);
$('select[name="myselect"]').append(option).trigger('change');
// manually trigger the `select2:select` event
$('select[name="myselect"]').trigger({
type: 'select2:select',
params: {
data: {
id: "myid",
text: "my custom option",
customparam: {
hello: "I'm here"
}
}
}
});
这就像自定义参数未附加到元素上,而只是传递给事件。
答案 0 :(得分:0)
对于所有试图找到将自定义参数添加回远程select2的解决方案的人来说,这是我所做的并且完美的工作:
Array2
然后在您需要致电时:
$('select[name="yourfieldname"]')
.append(new Option(`${doc.n}`, doc._id, true, true))
.select2('data')[0].customparam = doc.i;
答案 1 :(得分:0)
@rafaelrglima的作品为我描述的方法,但是我更喜欢下面的方法,该方法是从Github issue 2830中dejan9393的答案中收集的:
var dataAdapter = $('select[name="myselect"]').data('select2').dataAdapter;
dataAdapter.addOptions(dataAdapter.convertToOptions([{
id: "myid",
text: "mycustomoption",
customparam: "hello"
}]));
我更喜欢这种方式,因为我不必为添加“ id”和“ text”添加一个步骤,也不必为添加自定义参数而单独添加一个步骤。另外,convertToOptions也采用数组,因此您可以方便地一步添加多个选项。