Я получаю Метод select2 ('data') был вызван для элемента, который не использует Select2 при переносе select с 3.5 на 4.0.12. Как я проверяю, метод initselection в docs был удален и вместо него Мне нужно использовать 1004 * метод требования выбора_1005 * адаптера.
Вот мой код
var dataUrl;
dataUrl = $(this).data('url');
placeholder = $(this).data('placeholder');
$.fn.select2.amd.require([
'select2/data/array',
'select2/utils'
], function (ArrayData, Utils) {
function CustomData ($element, options) {
CustomData.__super__.constructor.call(this, $element, options);
}
Utils.Extend(CustomData, ArrayData);
CustomData.prototype.current = function (callback) {
var data = [];
var list = this.$element.data('users');
if(list) {
return callback(list);
} else {
return {};
}
// var currentVal = this.$element.val();
// if (!this.$element.prop('multiple')) {
// currentVal = [currentVal];
// }
// for (var v = 0; v < currentVal.length; v++) {
// data.push({
// id: currentVal[v],
// text: currentVal[v]
// });
// }
callback(data);
};
return $('#id').select2({
multiple: true,
placeholder: placeholder,
quietMillis: 500,
minimumInputLength: 3,
dataAdapter: CustomData,
// initSelection: function(element, callback) {
// var list = element.data('users');
// if(list) {
// return callback(list);
// } else {
// return {};
// }
// },
ajax: {
url: dataUrl,
dataType: "json",
global: false,
data: function(term, page) {
return {
term: term
};
},
results: function(data, page) {
return {
results: data.items
};
}
},
formatResult: function(data) {
if(data.parent === true){
return '<strong>' + data.name + '</strong>';
}else{
return ' '+ data.name;
}
},
formatSelection: function(data) {
return data.name;
}
}).select2('val', []);
})