У меня возникли трудности с поиском окна автозаполнения для работы с Play 2.0. Я пытаюсь сделать то же самое, что описано в this article, только с Play 2.0.Play 2.0 автозаполнение обратная маршрутизация не работает
В принципе, я определил действие:
def autocompleteSearch(term : String) = Action {
// Do something to get a list of suggestions
val list = ...
// Reply with list
Ok(Json.toJson(list))
}
я добавил маршрут в файле маршрутов:
GET /autocompleteSearch controllers.Application.autocompleteSearch(term: String)
я создал скрипт автозаполнения:
$(function() {
/*
* Autocomplete for populating an input field with a value from the server.
*/
$('input.autocomplete').each(function() {
var $input = $(this);
var serverUrl = $input.data('url');
$(this).autocomplete({ source:serverUrl });
});
});
И я вставить следующее на странице:
<input name="search" class="autocomplete" data-url="@{routes.Application.autocompleteSearch()}">
К сожалению, это не работает! Я получаю следующее сообщение об ошибке компиляции:
not enough arguments for method autocompleteSearch: (term: String)play.api.mvc.Call. Unspecified value parameter term.
Если я делаю это, я получаю следующее сообщение об ошибке:
<input name="search" class="autocomplete" data-url="@{routes.Application.autocompleteSearch}">
missing arguments for method autocompleteSearch in class ReverseApplication; follow this method with `_' if you want to treat it as a partially applied function
Лечение как частично применяется не дает результата я хочу, так как полученный HTML выглядит это:
<input name="search" class="autocomplete" data-url="<function1>">
Я в конечном итоге, поставить фиктивный аргумент, чтобы получить обратный маршрут к работе:
<input name="search" class="autocomplete" data-url="@{routes.Application.autocompleteSearch("")}">
Но тогда мой автозаполнения бесполезно, потому что это всегда вызов функции с пустой строкой ...
ли кто-нибудь удалось получить эту работу?
Заранее благодарим за вашу помощь!
==
последующий вопрос:
Хорошо. Так я последовал за документ и определил это в Application.scala:
def javascriptRoutes = Action {
import routes.javascript._
Ok(
Routes.javascriptRouter("jsRouter")(
routes.javascript.Application.autocompleteSearch
)
).as("text/javascript")
}
Я добавил этот скрипт на странице:
<script type="text/javascript" src="@routes.Application.javascriptRoutes"></script>
Теперь, как я могу изменить свое поле ввода, чтобы соединить точки?
ли:
<input name="search" class="autocomplete" data-url="jsRouter.controllers.Application.autocompleteSearch">
или
<input name="search" class="autocomplete" data-url="jsRouter.controllers.Application.autocompleteSearch().ajax()">
?
Ничего не работает!
Я должен сказать, что я либо очень и очень тупой, что я не могу понять это, или есть основных отсутствие документации об этой функции ...