Javascript 通过编程创建选项获得更多数据
我正在使用select2v4。我有一个对象,我想得到该对象的所有数据。当我选择and选项并使用$(_id).select2('data')[0])时,它返回所选对象的所有数据 但在编辑的情况下,当我以编程方式添加选项时Javascript 通过编程创建选项获得更多数据,javascript,jquery,jquery-select2,jquery-select2-4,Javascript,Jquery,Jquery Select2,Jquery Select2 4,我正在使用select2v4。我有一个对象,我想得到该对象的所有数据。当我选择and选项并使用$(_id).select2('data')[0])时,它返回所选对象的所有数据 但在编辑的情况下,当我以编程方式添加选项时 var option = new Option(this.device.serial, this.device.id.toString(), true, true); this.objRef.append(option).trigger('change');
var option = new Option(this.device.serial, this.device.id.toString(), true, true);
this.objRef.append(option).trigger('change');
再次选择created选项,它只返回对象的id和文本,而不是所有数据。如果使用自定义数据适配器,它将返回所有数据:
CustomDataAdapter.prototype.updateOptions = function (data) {
let myData: any[] = [data];
this.$element.find('option').remove();
this.addOptions(this.convertToOptions(myData));
}
但我不喜欢使用自定义适配器。有没有办法将对象转换为与数据适配器相同的选项,以便下次选择时再次包含所有数据
下面是select2的定义。数据是在之前加载的,我使用ajax只是为了分页和搜索:
var $ddResult = $(_id).select2({
placeholder: '',
selectOnClose: _selectOnClose,
tags: _tags,
allowClear: _allowClear,
minimumResultsForSearch: 5,
ajax: {
transport: function (params, success, failure) {
let pageSize = 30;
let term = (params.data.term || '').toLowerCase();
let page = (params.data.page || 1);
if (timer)
clearTimeout(timer);
timer = setTimeout(function () {
timer = null;
let results = _data
.filter(function (f) {
return f.text.toLowerCase().includes(term);
});
let paged = results.slice((page - 1) * pageSize, page * pageSize);
let options = {
results: paged,
pagination: {
more: results.length >= page * pageSize
}
};
success(options);
}, params.delay);
}
},
})