我正在尝试将特定于页面的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?
答案 0 :(得分:6)
这已在mailing list上讨论过。希望有所帮助。
@main{ <script src="javascripts/test/test.js" type="text/javascript"></script> } {
<h1>Test</h1>
}
答案 1 :(得分: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文件