2

我正在尝试将特定于页面的 javascripts 作为参数传递给主模板。这是我尝试过的:

main.scala.html:

@(title: String,moreScripts: Html)(content: Html)

<!DOCTYPE html>

<html>
    <head>
        <title>@title</title>
        <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
        <link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")">
        <script src="@routes.Assets.at("javascripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
        @moreScripts
    </head>
    <body>
        @content
    </body>
</html>

test.scala.html:

@main("Test",<script src="javascripts/test/test.js" type="text/javascript"></script>) {
        <h1>Test</h1>
}

但我收到一个type mismatch; found : scala.xml.Elem required: play.api.templates.Html错误。<script>我也尝试将声明包装起来@{}无济于事。

我需要如何构造<script>语句以便将语句识别为 HTML?

4

2 回答 2

6

这已在邮件列表中讨论过。希望有帮助。

@main{ <script src="javascripts/test/test.js" type="text/javascript"></script> } {
   <h1>Test</h1>
}
于 2012-05-31T09:39:37.983 回答
3

我也为此苦苦挣扎,但这似乎对我有用:

main.scala.html:

@(title: String, moreScripts: Html = Html(""))(content: Html)
<!DOCTYPE html>
<html>
  <head>
   <title>@title</title>
   @moreScripts
  </head>
  <body>
   @content
  </body>
</html>

test.scala.html:

@moreScripts = { <script src="routes.Assets.at("javascripts/MyJS.js")"></script>}

@main("Page Title", moreScripts) {
  <h1>Some content here</h1>
}

当然,您的 Javascript 文件应该位于app/assets/javascripts标准 Javascript 或 Coffeescript 文件中

于 2014-02-04T04:35:46.093 回答