如何在play框架中为不同的视图页面指定不同的JS文件?

时间:2014-07-14 05:02:58

标签: javascript playframework

我们如何在play框架中为不同的视图页面定义不同的javascript文件?

一种方法是=>

@main(title, """
@*JS CODE*@
"""{
//Template Codes
}

在主模板中,使用它像=>

@(title,stringJS){
<script>
@Html(stringJS)
</script>
}

但是如果JS代码不是在所有页面中使用而是选择少,那么开发人员不能在每个相对视图页面中复制JS代码。在我的情况下,所有javascripts都加载在页脚上,这是一个单独的模板。

我们如何解决这个问题?

感谢任何帮助,谢谢!

2 个答案:

答案 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。