だから私は 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 = ["abc@def.com", "joe@banana.com"];
$('.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>