我正在将我在 Play Framework 2.5 中编写的应用程序更改为使用 AngularJs 的单页应用程序。
这是我在做什么的概述:
- 使用 Scala 模板的 @for 显示帖子列表
- 每个帖子都使用包含的模板呈现
片段:
@for(post <- posts) {
@fragments.post(post)
}
到目前为止,这是我对 Angular 所做的:
- 使用 $http 使用 Scala 的 javascript 路由从数据库中检索数据
- 使用 ng-repeat 而不是 @for 来遍历列表
- 当前,每个帖子都使用 {{post}} 呈现为纯 json
片段:
<ul>
<li ng-repeat="post in posts">
<div> {{post}} </div>
</li>
</ul>
现在无法使用某些模板显示每个帖子,以下是尝试:
- 以某种方式将 post 作为 JSON 传递给我最初使用的 Scala 模板。我尝试将模板的参数类型从 Post(scala 对象)更改为一些 Json。自然,下面的代码导致了“未找到:价值帖子”
例如:
<li ng-repeat="post in posts">
@fragments.post( {{post}} )
</li>
- 使用 Angular 指令模板而不是 Scala 模板:在下面的 angularjs 代码中,使用内联模板效果很好。我还可以使用 templateUrl 选项将模板外部化到其他文件。
例如:
<ul>
<li ng-repeat="post in posts">
<div mydirective></div>
</li>
</ul>
和js:
mainApp.directive("mydirective", function() {
return {
//template: "<h1>Made by a directive: {{post.title}} !</h1>"
templateUrl: "/assets/path_to_template"
};
});
即使后者现在正在工作,我什至不确定哪种方法会更好。我真的很喜欢能够将整个表单传递给 Scala 模板,并让它将 UI 表单绑定到控制器表单。将 AngularJs 集成到 Play 框架中确实令人困惑,而 Play-angular-seed 并没有让我更清楚。
实现上述目标的最佳方法是什么?
谢谢