如何在Play中的javascript中使用自定义模板标签!框架?

时间:2011-08-13 18:09:56

标签: javascript html playframework

如何在我的javascript代码中使用自定义标记?例如:

function toHTML(message){
    return #{customTag message:message /};
}

不起作用..

谢谢!

//一些澄清

我正在使用AJAX检索消息列表,并且我有一个名为“customTag”的html标记,其中包含用于将消息格式化为<li>元素的html代码。

如果我打电话

#{customTag message:'hello' /} 

直接在HTML文件中,它可以工作并用<li>hello</li>替换它。但是当我尝试从javascript调用它时,我收到一条错误消息。

3 个答案:

答案 0 :(得分:1)

这不行。尝试在价值附近使用双引号。或者,清楚地写下你想要的东西。

答案 1 :(得分:1)

您遇到的问题是,您正在尝试将服务器端逻辑(模板的呈现)与客户端事件(javascripts执行)混合在一起。因此,您的方法将无法工作,因为自定义标记在您到达客户端之前从服务器端执行。

你可以使用Play标签让它工作,但我建议你考虑使用Javascript模板来做这种客户端。在Play下载中的samples-and-tests文件夹中查看聊天应用程序以查看其运行情况。但是,如果您希望使用播放模板/标签使其正常工作,请参阅下文。

如果您更改自定义标记以使其不接受输入,而是“了解”javascript变量,那么这应该可行。所以你的标签代码看起来像

"<li>" +message+ "</li>";

因此,这不会使用标记将变量传递给标记,而是使用客户端javascript变量。

我在测试应用程序(views / Application / index.html)中使用以下代码对此进行了测试,并按预期输出了javascript。

<html><head></head>
<body>
<script type="text/javascript">
    function toHTML(message){
        return #{message /}
    }

    alert(toHTML("hello"));
</script>
</body>
</html>

答案 2 :(得分:0)

在我看来,这不起作用,因为在服务器端评估自定义标记,即在内容发送到客户端之前,然后在解释JavaScript之前。

[抱歉我的英文!]

相关问题