编程语言
首页 > 编程语言> > java – 添加到Play Framework 2中的scala模板标签

java – 添加到Play Framework 2中的scala模板标签

作者:互联网

我想将javascript添加到< head>我在标签内的网页.

这是我在我的网页上使用的更多脚本:

main.scala.html

@(title: String, scripts: Html = Html(""))(content: Html)
<!DOCTYPE html>
<html lang="nl">
    <head>
        <title>@title</title>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        @scripts
    </head>
    <body>
        @content
    </body>
</html>

page.scala.html

@scripts = {
    <script type="text/javascript">
        $(document).ready(function() {
            alert(1);
        });
    </script>
}
@main("Title", scripts) {
    <p>page content</p>
}

到现在为止还挺好!但是我想在我编写的标签(组件)中做同样的事情,需要在网页中包含一些javascript代码.

我的问题是如何传递< script>从标签到main.scala.html的元素?

所以page.scala.html将是:

page.scala.html

@import tags._
@main("Title") {
    @mytag("green")
}

mytag.scala.html

@(color: String)
<script type="text/javascript">
    $(document).ready(function() {
        alert('@color');
    });
</script>

<p>Some more content</p>

在这种情况下,< script>标签在HTML页面的中间呈现,我想传递< script>标记到@scripts变量,以便它可以在< head>内部呈现标签.

解决方法:

好的,我想出了一个更好的解决方案恕我直言.

我创建了以下标记:

script.scala.html

@(content: Html)
@{
    var additionalScripts = ctx().args.get("additionalScripts").asInstanceOf[List[Html]];
    if(additionalScripts == null) {
        additionalScripts = new ArrayList[Html]();
        ctx().args.put("additionalScripts", additionalScripts)
    }

    val added = additionalScripts.add(content);
}

renderscripts.scala.html

@additionalScripts = @{ctx().args.get("additionalScripts").asInstanceOf[List[Html]]}
@if(additionalScripts != null) {
    @for(additionalScript <- additionalScripts) {
        @additionalScript
    }
}

在main.scala.html中,您可以使用:

@(title: String)(content: Html)
@import tags._
<!DOCTYPE html>
<html lang="nl">
    <head>
        <title>@title</title>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        @renderscripts()
    </head>
    <body>
        @content
    </body>
</html>

您可以使用以下命令在模板或标签中指定其他脚本:

@import tags._
@script {
    <script type="text/javascript">
        $(document).ready(function() {
            alert('This will be in the head!');
        });
    </script>
}

这很好,对吧?

标签:java,javascript,playframework,playframework-2-0,playframework-2-1
来源: https://codeday.me/bug/20190624/1282411.html