使用自定义参数创建远程Select2 v4选项

时间:2018-12-10 20:59:52

标签: jquery-select2-4

这是问题所在,我可以按照如下文档中的说明创建自定义选项:

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"
            }
        }
    }
});

这就像自定义参数未附加到元素上,而只是传递给事件。

2 个答案:

答案 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也采用数组,因此您可以方便地一步添加多个选项。