Play Framework 2项目中的AngularJs:模板渲染

时间:2016-05-24 22:15:44

标签: angularjs playframework playframework-2.0 scala-template

我正在使用AngularJs将我在Play Framework 2.5中编写的应用程序更改为单页面应用程序。

以下是我正在做的事情的概述:

  • 使用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>

现在无法使用某个模板显示每个帖子,以下是尝试:

  • 以某种方式将帖子作为JSON传递给我最初使用的Scala模板。我尝试将模板的参数类型从Post(scala对象)更改为一些Json。当然,下面的代码导致了一个&#34; not found:value post&#34;

e.g:

<li ng-repeat="post in posts">
  @fragments.post( {{post}} )
</li>
  • 使用Angular指令模板而不是Scala模板:在下面的angularjs代码中,使用内联模板工作正常。我还可以使用templateUrl选项将模板外部化到其他文件。

e.g:

<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 Framework中确实令人困惑,Play-angular-seed并没有让我更清楚。

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

由于

1 个答案:

答案 0 :(得分:1)

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