0
this jsfiddle에 select2 구현이 있습니다. Github repo를 검색 할 수있게하고 사용자가 선택할 수 있도록 결과를 반환합니다. 특정 검색과 일치하는 Repo가 1 개 뿐인 경우 자동 선택됩니다.select2 : 미리 채워진 옵션을 사용자에게 올바르게 표시하는 방법은 무엇입니까?
일부 기본 옵션으로 내 select2 양식을 미리 채울 수 있어야합니다. the docs에 명시된 바와 같이 나는이 같은 것을 할 수 있어야한다 : 나는 console.log all selected data
버튼을 누르면
<select id='select2_element' multiple='multiple' style='width:100%;'>
<option value="easypr-ja" selected="selected">EasyPR-Java 70 32393764</option>
</select>
내가 id
내 프리 필드 REPO의 text
에 액세스 할 수 있는지 볼 수 있지만, 브라우저에서 미리 채워진 옵션 위에는 undefined undefined easypr-ja
으로 표시됩니다.
기본 옵션의 값을 올바르게 표시하려면 무엇을해야합니까?
다음과 같이 내 구현이 일부 사용자 지정 서식을하고있다:
var createRepo, formatRepo, formatRepoSelection, selectRepos;
formatRepoSelection = function(element) {
return element.name + ' ' + element.forks + ' ' + element.id;
};
formatRepo = function(element) {
var markup;
if (!element.loading) {
return markup = element.name + ' ' + element.id;
}
};
createRepo = function() {
$(".btn-create-repos").off("click");
return $(".btn-create-repos").click(function(e) {
var el, element_ids;
el = $(e.currentTarget);
element_ids = $("#select2_element").select2('data');
return console.log(element_ids);
});
};
selectRepos = function() {
var option, select2_element;
select2_element = $('#select2_element');
select2_element.select2({
placeholder: "Type in 'easypr-ja' to get only 1 result",
ajax: {
url: "https://api.github.com/search/repositories",
dataType: 'json',
delay: 250,
data: function (params) {
return {
q: params.term,
page: params.page
};
},
processResults: function (data, params) {
if (data.items.length === 1) {
setTimeout(function() {
$("#select2-select2_element-results li:first-child").trigger('mouseup');
}, 0);
return {
results: data.items
};
} else {
params.page = params.page || 1;
return {
results: data.items,
pagination: {
more: (params.page * 30) < data.total_count
}
};
}
},
cache: true
},
escapeMarkup: function(markup) {
return markup;
},
minimumInputLength: 2,
templateResult: formatRepo,
templateSelection: formatRepoSelection
});
};
$(function() {
selectRepos();
return createRepo();
});