我们如何在play框架中为不同的视图页面定义不同的javascript文件?
一种方法是=>
@main(title, """
@*JS CODE*@
"""{
//Template Codes
}
在主模板中,使用它像=>
@(title,stringJS){
<script>
@Html(stringJS)
</script>
}
但是如果JS代码不是在所有页面中使用而是选择少,那么开发人员不能在每个相对视图页面中复制JS代码。在我的情况下,所有javascripts都加载在页脚上,这是一个单独的模板。
我们如何解决这个问题?
感谢任何帮助,谢谢!
答案 0 :(得分:2)
在Common templates use cases文档部分中描述了:&#39; moreScripts和moreStyles等价物&#39;
非常简短,就像这样(查看)
@moreScripts = {
<script type="text/javascript">alert("hello !");</script>
}
@moreStyles = {
<style>background: pink;</style>
}
@main("Title", moreScripts, moreStyles){
Html content here ...
}
并在main.scala.html
中以:
@(title: String, moreScripts: Html = Html(""), moreStyles: Html = Html(""))(content: Html)
<!DOCTYPE html>
<html>
<head>
<title>@title</title>
<link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
@moreStyles
<script src="@routes.Assets.at("javascripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
@moreScripts
</head>
<body>
@content
</body>
</html>
答案 1 :(得分:0)
我提出了我的解决方案,感谢这个Helpful SO post,我所做的是:
@main(title, """
@*NO JS CODE, but declaration itself*@
<script src="/assets/javascripts/libs/main.js" type="text/javascript"></script>
<script src="@routes.Assets.at("javascripts/libs/main.js")" type="text/javascript"></script>//Doing this gives out errors, so I had to hardcode the "src" location
"""{
//Template Codes
}
如果有更有效的方法来解决这个问题,欢迎提出想法,因为硬编码src
并不是处理这个问题的有效方法,imo。