Доступ к атрибутам шаблона Play Framework из отдельных файлов JS

Я совершенно новичок в Play Framework и не считаю себя слишком талантливым в разработке интерфейса, поэтому у меня были большие проблемы с этим...

Я хочу иметь кнопку, которая меняет источник изображения туда и обратно. Изображения довольно большие, поэтому я подумал о предварительной загрузке изображений в Javascript, но для этого мне нужно получить доступ к этому Assets controller, чтобы получить разные изображения из общедоступного каталога images. Проблема в том, что я стараюсь держать все в порядке и хочу сохранить Javascript (в моем случае я использую Coffeescript) в отдельных файлах. Проблема здесь в том, что я не могу получить доступ к этому Assets controller из Coffeescript (или к любому из значений, переданных из Java в шаблон, если уж на то пошло). Поэтому, когда я пытаюсь изменить источник изображения, он просто дает мне 404.


person user2466999    schedule 19.07.2014    source источник


Ответы (1)


В Play есть способ создать глобальный объект javascript, который имеет доступ к обратной маршрутизации для контроллеров, включая активы, если вы это настроите. Сначала прочитайте эту страницу:

http://www.playframework.com/documentation/2.3.x/ScalaJavascriptRouting

После прочтения настройте маршруты javascript для включения этого ресурса (см. встроенный маршрутизатор или ресурс маршрутизатора в документации):

routes.javascript.Assets.at

Затем вы сможете получить доступ к ресурсам через свой javascript следующим образом:

console.log(jsRoutes);
console.log(jsRoutes.controllers.Assets.at("images/favicon.png").url);
person kipsigman    schedule 19.07.2014
comment
Это сработало отлично, спасибо! Я боролся с некоторыми проблемами с добавлением утверждения, упомянутого в ссылке: (implicit req: RequestHeader). Но потом, просто удалив его, он скомпилировался и отлично заработал! :) - person user2466999; 20.07.2014
comment
Рад слышать! Игра действительно крута в том смысле, что все ваши маршруты и ссылки могут быть ссылками из скомпилированного кода, что значительно упрощает последующий рефакторинг. Кроме того, есть много других замечательных функций. Если у вас есть проблемы, вы обычно получите ответы на вопросы StackOverflow, а также загляните в группу Google Play — groups.google.com/forum/#!forum/play-framework. - person kipsigman; 20.07.2014