经过多次stackoverflow解决方案的一些研究后,他们都没有帮助我解决这个问题。
我有一个初始数据来填充select2的输入:
var select2_data = [{id:0, product_text:'text_1'},{id:1,product_text:'text_2'},{id:2, product_text:'text_3'}];
然后启动select2没有任何问题。
var select2 = $('#select2_id').select2(
{
id: function(e) {return e.product_text; },
data:{results: select2_data, text:'product_text'},
width: '50%',
placeholder: 'Choose a product',
formatSelection: Product_Result,
formatResult: Product_Result
});
但我的问题是我不知道如何将新数据添加到现有的select2输入中。
新数据示例:
var new_data = {id:4, product_text: 'text_4'};
我做了一些实验,尝试获取现有数据并附加到现有数据数组中,如下所示:
var select2_existing_data = $('#select2_id').select2('data');
select2_existing_data.append(new_data);
但经过一些研究后,这个 select2_existing_data 变量适合只返回选定的数据,而不是整个数据。
希望你能帮助我找到解决方案, 感谢
答案 0 :(得分:1)
这不仅仅是附加到原始数据数组那么简单吗?
select2_data.push({ id: 4, product_text: 'text_4' });
答案 1 :(得分:1)
我曾经做过类似的事......
//get the current data array (what is currently in the select 2)
var dataArray = $("#myselect2").select2('data');
//push your additional item
dataArray.push({ "Name": 'MyNewItem', "Id": 'MyNewItemId' });
//push new item with items that were already in the list
$("#myselect2").select2("data", dataArray);
未经测试。您可能想检查select2('data')中是否有项目。