0

我正在将我在 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 并没有让我更清楚。

实现上述目标的最佳方法是什么?

谢谢

4

1 回答 1

0

您可以考虑将 AngularJS 的内容与 Play 完全分开。如果这是您的选择,这是如何操作的链接。

于 2016-05-29T13:53:02.660 回答