将javascript添加到当前视图

时间:2014-04-05 13:26:53

标签: playframework-2.2

有没有办法将视图B中声明的脚本标记添加到视图A中的脚本列表(调用B)? 下面的例子应该清楚我需要什么。 我有一个基本模板A:

<html>
    <head>
        <title>@title</title>
        <!-- declared stylesheets -->

    </head>
    <body>
        @content

        <!-- Java script dependencies -->
        <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
        <script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
    </body>
</html>

请注意,基本视图声明了对文件末尾的jquery.js和bootstrap.js的依赖关系。除了以下情况外,这是可以的:

@base(title) {
@header()
@navigation()
<div class="container">
    @content
</div>}

navigation视图有一个脚本标记,它依赖于已加载的jquery。 当我加载页面时,我收到一条错误,指出&#34; $符号未定义&#34;这是有道理的,因为在加载jquery之前解析了脚本。 有没有办法在基本视图的末尾(在jquery声明之后)添加navigation中声明的脚本?

我已经尝试将依赖项移动到jquery到<head></head>部分,一切都按预期工作,但我想保留当前的布局。

编辑:为了更清楚,我想将脚本依赖项从@navigation视图发送到@base视图。

1 个答案:

答案 0 :(得分:0)

查看Play的文档 moreScripts and moreStyles equivalents (文档的最后一部分)

de dacto它deosn不需要命名scripts所以你可以使用自己的名字,也可以使用它将其他HTML块发送到更高级别的视图(布局)。

<强> See answers to similar quesion

所以它可以是,即:

@navigationScripts = {
    <script src="/assets/my-navigation.js"></script>
}

@base(title, navigationScripts) {
    @header()
    @navigation()
    <div class="container">
        @content
    </div>
}

在布局中:

@(title: String, navigationScripts: Html = null)
<html>
    <head>
        <title>@title</title>
        <!-- declared stylesheets -->

    </head>
    <body>
        @content


        <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
        <script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
        @navigationScripts
    </body>
</html>