Я пытаюсь использовать автозаполнение JQuery UI и иметь следующий код
$( '#searchbar' ).autocomplete
source: ( request, response ) ->
$.ajax({
url: "$$ apiUrl pt.casemanagement $$/case/search"
})
success: ( data ) ->
response([
{ label: "Example", value: 'Testing'}
])
Я в основном ожидаю успеха и вводя произвольную метку и значение в ответ для целей тестирования. Бар определенно отправляет GET и получает 200. Я даже вижу значения с сервера, но по какой-то причине не кажется, что что-либо заполняется в поисковой панели. Я должен (насколько я понял) ввести "Е" и увидеть "Пример" автоматически, верно?
Этот синтаксис кажется неправильным?
Ваш синтаксис действительно ошибочен. Основная проблема с ним - отступы. Блоки определяются с отступом в CoffeeScript, поэтому вы, вероятно, хотели бы что-то вроде этого:
$( '#searchbar' ).autocomplete
source: ( request, response ) ->
$.ajax({
url: "$$ apiUrl pt.casemanagement $$/case/search"
success: ( data ) ->
response([
{ label: "Example", value: 'Testing'}
])
})
Кроме того, вы закрываете объект $.ajax
вызовом $.ajax
прежде чем заканчивать определение литерала. Я не изменял никаких других пробелов или синтаксиса, чтобы понять, что подразумевается в отступе.
В CoffeeScript вы можете опустить парсеры для вызовов функций с аргументами и фигурными скобками вокруг объектов (если это не является двусмысленным или вам необходимо обойти правила приоритета по умолчанию), поэтому ваш код будет выглядеть более чистым, как это:
$('#searchbar').autocomplete
source: (request, response) ->
$.ajax
url: "$$ apiUrl pt.casemanagement $$/case/search"
success: (data) ->
response [
label: 'Example'
value: 'Testing'
]
Если вам нужна дополнительная информация о том, почему и как это работает, дайте мне знать, и я могу пойти по очереди.
Sidenote: вы не используете параметр request
для получения значений автозаполнения с сервера. Это означает, что вы, вероятно, не получите ожидаемых результатов от сервера, так как вы не отправляете ему поисковый запрос.