如何将Play模板部件封装在单独的模块中?

时间:2016-04-21 11:42:43

标签: scala playframework playframework-2.0

我有一个Play应用程序,包含以下模块:

  1. angular:封装所有AngularJS内容
  2. frontend:客户面临的事情
  3. angular模块在​​build.sbt文件中定义了webjar依赖关系。另外,我在views目录中有以下HTML文件:

    @(webJarAssets: WebJarAssets)
    
    <script src="@angular.controllers.routes.WebJarAssets.at(webJarAssets.locate("jquery.js"))"></script>
    <script src="@angular.controllers.routes.WebJarAssets.at(webJarAssets.locate("angularjs.js"))"></script>
    

    我的控制器看起来像这样:

    package angular.controllers
    
    import javax.inject._
    
    import play.api.mvc._
    
    @Singleton
    class TestController @Inject() (webJarAssets: WebJarAssets) extends Controller {
    
      def index = Action {
        Ok(angular.views.html.test(webJarAssets))
      }
    
    }
    

    到目前为止一切顺利,当访问相应的路线时,一切都很好。但是,这不是我想要使用这个模块的方式。

    在我的frontend模块中,我有一个名为main.scala.html的模板,如下所示:

    @(title: String)(content: Html)
    
    <!DOCTYPE html>
    <html lang="en">
        <head>
            @* Here's where we render the page title `String`. *@
            <title>@title</title>
            <link rel="stylesheet" media="screen" href="@routes.Assets.versioned("stylesheets/main.css")">
            <link rel="shortcut icon" type="image/png" href="@routes.Assets.versioned("images/favicon.png")">
            <script src="@routes.Assets.versioned("javascripts/hello.js")" type="text/javascript"></script>
        </head>
        <body>
            @content
        </body>
    </html>
    

    现在我希望在angular之后包含@content模块模板,该模板封装脚本标记。另外,我想使这个可选,以便我可以传递一个特定的参数,以激活脚本包含。我怎样才能做到这一点?

0 个答案:

没有答案