Итак, я пытаюсь заставить плагин select2 работать с приложением Backbone.js/CakePHP. Идея состоит в том, что этот select2 содержит адреса электронной почты для связи с людьми по мере выполнения задач, но форму можно редактировать. Что я хочу сделать, так это (1) загрузить/отобразить все уже сохраненные адреса электронной почты для редактируемой задачи и (2) я хочу, чтобы select2 выполнял поиск AJAX для получения списка распознанных электронных писем. У меня по-прежнему возникает эта проблема, когда я могу либо показать исходные данные, либо использовать функцию поиска AJAX.
Мой текущий код для моего блока select2 — это Backbone.View, и он выглядит так:
define([
'backbone',
'jquery',
'jquery.select2'
],
function(Backbone, $, select2) {
var notificationSelector = Backbone.View.extend({
notifications: undefined,
events: {
'change' : 'select2ContactsChanged'
},
initialize: function(attrs) {
this.collection.on('add remove reset', this.render(), this);
this.select2ContactsChanged();
},
render: function() {
var contacts = ["[email protected]", "[email protected]"];
$('.notification-selector').attr('value', contacts);
if(this.select2Control == undefined)
{
// Do Search() + query here
this.select2Control = this.$el.select2({
width: '200px',
placeholder: '@email',
tags: [],
minimumInputLength: 3,
// initSelection: function(element, callback) {
// return $.ajax({
// type: "GET",
// url: "/notifications/fetch/",
// dataType: 'json',
// data: { id: (element.val()) },
// success: function(data) {
// }
// }).done(function(data) {
// console.log(data);
// });
// },
});
}
else
{
// Do Search() + query here
this.select2Control = this.$el.select2({
width: '200px',
placeholder: '@email',
tags: [],
minimumInputLength: 3,
ajax: {
url: '/notifications/search/',
dataType: 'json',
data: function(term, page) {
return {
SearchTerm: term
};
},
results: function(data, page) {
return {
results: data
};
}
}
});
}
},
select2ContactsChanged: function() {
var contacts = this.select2Control.val().split(',');
this.collection.reset(contacts);
}
});
return notificationSelector;
});
Я прочитал ответ создателя Select2 другому человеку (https://github.com/ivaynberg/select2/issues/392), в котором он говорит использовать «пользовательский запрос» для достижения того, что мне кажется нужным. У меня возникли проблемы с поиском подходящих примеров или пониманием документации, чтобы понять, что он имеет в виду. Может ли кто-нибудь определить, что я делаю неправильно/отсутствует?
Спасибо за ваше время!
РЕДАКТИРОВАТЬ Я забыл упомянуть - элемент DOM, к которому он прикреплен, равен <input type="hidden" multiple="true" class="notification-selector select2-result-selectable"></input>