Я в процессе изменения приложения, которое я написал в Play Framework 2.5, для одностраничного приложения, использующего AngularJs.AngularJs in Play Framework 2 проект: рендеринг шаблона
Вот краткий обзор того, что я делал:
- отображения списка сообщений, с помощью @for Scala шаблона
- каждое сообщение было вынесено с помощью включенного шаблона
сниппет:
@for(post <- posts) {
@fragments.post(post)
}
И до сих пор вот что я сделал с Угловым:
- использование $ HTTP для получения данных из БД с помощью JavaScript в Scala маршрутизации
- использование нг-повтора вместо @for, чтобы пройти по списку
- каждый пост в настоящее время оказанной как простой JSON, используя { {после}}
сниппет:
<ul>
<li ng-repeat="post in posts">
<div> {{post}} </div>
</li>
</ul>
и теперь возникают проблемы с отображением каждый пост с некоторым шаблоном, здесь являются попытки:
- как-то передать пост как JSON для шаблона Scala, который я использовал изначально. Я попытался изменить тип параметра шаблона из Post (объект scala) в некоторый Json. Естественно, приведенный ниже код вызвал «не найден: запись значения»
например:
<li ng-repeat="post in posts">
@fragments.post({{post}})
</li>
- использование Угловой шаблон директивы вместо шаблона Scala: В angularjs коде ниже, используя шаблон инлайн работал отлично. Я также могу экпортировать шаблон в другой файл, используя параметр templateUrl.
.: например
<ul>
<li ng-repeat="post in posts">
<div mydirective></div>
</li>
</ul>
и ЯШ:
mainApp.directive("mydirective", function() {
return {
//template: "<h1>Made by a directive: {{post.title}} !</h1>"
templateUrl: "/assets/path_to_template"
};
});
Даже несмотря на то, последний сейчас работает, я даже не уверен, какой подход будет лучше. Мне действительно нравится иметь возможность передавать целые формы шаблону Scala и связывать форму пользовательского интерфейса с формой контроллера. Эта интеграция AngularJs в Play Framework была действительно запутанной, и игровое семя не сделало меня более ясным.
Что было бы лучшим способом достижения вышеуказанного?
Благодаря
Посмотрите здесь http://stackoverflow.com/questions/16155542/dynamically-displaying-template-in-ng-repeat-directive-in-angularjs – mgosk
Недавно я создал игровое/угловое приложение. Мой подход заключался в том, что все конечные точки в Play-маршрутах вызывали угловые вызовы через $ http. Затем я служил статическим шаблонам для любого требуемого html-угла. Любой маршрут, определенный в угловом, должен служить базовому угловому применению посредством игры (таким образом, вы можете перемещаться непосредственно к любому угловому url). Слушать только служил html, когда он обслуживал все приложение или простые угловые шаблоны. Данные всегда поступали из явно $ http-звонков и никогда не включали html (всегда json, в моем случае). – gregghz
@gregghz это имеет смысл. Кроме того, я начал использовать Angular Material (который, как мне кажется, выглядит великолепно), и некоторые вещи не работают с шаблонами Scala от Play. Полагаю, лучший способ - медленно отойти от шаблонов. Что касается отправки данных через $ http, это кажется разумным, хотя для всех отправляемых объектов данных должны быть писатели JSON, чтобы контроллер мог передавать функции модели Json Builder перед возвратом в Angular – Khorkhe