我正在做这样的SELECT:
<select class="select form-control js-example-basic-multiple" multiple="multiple" id="id_tags" name="tags">
{% for tag in photo.tags.all %}
<option selected value="http://localhost:8001/api/tags/{{ tag.id }}/">{{ tag.name }}</option>
{% endfor %}
</select>
然后我启动了我的select2实例:
$(".js-example-basic-multiple").select2({
multiple : true,
ajax : { ..... }
});
我明白这一点:
AJAX肯定在工作,可以添加新项目:
即使对于只有十字架的项目,Select2实例也有正确的数据:
IN >>> $(".js-example-basic-multiple").val()
OUT >>> ["http://localhost:8001/api/tags/4142/", "http://localhost:8001/api/tags/4145/", "http://localhost:8001/api/tags/4160/", "http://localhost:8001/api/tags/4213/", "http://localhost:8001/api/tags/4344/", "http://localhost:8001/api/tags/6602/"]
答案 0 :(得分:1)
如果它可以帮助其他人,这就是我必须要解决的问题:
function make_select2() {
$(".js-example-basic-multiple").select2({
multiple : true,
id : function(repo) {
//console.log("repo");
//console.log(repo);
return repo.url;
},
ajax : {
url : "/api/tags/",
dataType : 'json',
delay : 100,
placeholder : "Tag your photos",
data : function(params) {
//console.log("params");
//console.log(params);
return {
q : params.term, // search term
page : params.page
};
},
processResults : function(data, params) {
// parse the results into the format expected by Select2.
// since we are using custom formatting functions we do not need to
// alter the remote JSON data
//console.log("data");
//console.log(data);
//console.log("params");
//console.log(params);
var select2Data = $.map(data.results, function(obj) {
obj.id = obj.url;
obj.text = obj.name;
return obj;
});
return {
results : select2Data,
pagination : {
more : data.next
}
};
},
cache : true,
},
escapeMarkup : function(markup) {
return markup;
},
minimumInputLength : 1,
templateResult : formatRepo, // omitted for brevity, see the source of this page
// templateSelection : formatRepoSelection // omitted for brevity, see the source of this page
});
}
这是我的代码 - 我所要做的就是评论templateSelection
- 无论如何它都是必要的。