JQuery UI Автозаполнение от Coffeescript

0

Я пытаюсь использовать автозаполнение JQuery UI и иметь следующий код

$( '#searchbar' ).autocomplete
source: ( request, response ) ->
$.ajax({
url: "$$ apiUrl pt.casemanagement $$/case/search"
})
success: ( data ) ->
            response([
              { label: "Example", value: 'Testing'}
            ])

Я в основном ожидаю успеха и вводя произвольную метку и значение в ответ для целей тестирования. Бар определенно отправляет GET и получает 200. Я даже вижу значения с сервера, но по какой-то причине не кажется, что что-либо заполняется в поисковой панели. Я должен (насколько я понял) ввести "Е" и увидеть "Пример" автоматически, верно?

Этот синтаксис кажется неправильным?

  • 0
    Кажется, что обработчик успеха не запускается, хотя я проверяю JSON, возвращаемый сервером, и он передает JSONLint.
Теги:
coffeescript
autocomplete

1 ответ

1

Ваш синтаксис действительно ошибочен. Основная проблема с ним - отступы. Блоки определяются с отступом в 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 для получения значений автозаполнения с сервера. Это означает, что вы, вероятно, не получите ожидаемых результатов от сервера, так как вы не отправляете ему поисковый запрос.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню