как использовать пользовательский объект в качестве источника данных
Вам необходимо отформатировать данные так, как ожидает виджет.У вас должно быть либо свойство label
, либо свойство value
(или оба) в каждом объекте в массиве результатов, чтобы виджет отображал ваши результаты.Вы можете включать другие данные в объект, если он удовлетворяет этим требованиям.
Для форматирования данных, возвращаемых с сервера, соглашение должно использовать $.map
:
source: function (request, response) {
$.getJSON("Home/GetTag", {
term: extractLast(request.term)
}, function (data) {
response($.map(data, function (item) {
return {
value: item.Name,
count : item.Count
};
});
});
},
(не проверено)
Это должно привести к заполнению результатов для вас.Это идет рука об руку со второй частью вашего вопроса:
В идеале я хочу представить пользователю список имен с соответствующим количеством рядом.
Это довольно легко выполнить, следуя этой демонстрации в качестве руководства:
$("#auto").autocomplete({ ... })
.data("autocomplete")._renderItem = function(ul, item) {
return $("<li>")
.data("item.autocomplete", item)
.append("<a>" + item.label + "<br />" + item.count + "</a>")
.appendTo(ul);
};
Вы можете переопределить функцию _renderItem
, чтобы отобразить все, что вы хотите, если это li
, который содержит a
тег и содержит данные item.autocomplete
.
Объедините эти две стратегии, и вы должны быть в бизнесе.Для рабочего примера этого посмотрите пример здесь : http://jsfiddle.net/andrewwhitaker/UvegL/
Этот пример объединяет удаленный источник данных и пользовательские данные и отображение.Надеюсь, это поможет, хотя вызов AJAX немного отличается.