0

我的目标:了解我可以从控制器发送到查看的参数的限制(如果有的话)。现在,我正在检查是否可以将任何 Twirl 的关键字(例如,@、@for 等)从控制器函数发送到视图,然后使用 JS 重新加载页面的一部分。

as(HTML)我们可以在控制器函数中使用时将原始 HTML 传递给视图。但是,是否可以将一个scala.html类型代码块及其所有语法糖从控制器的函数发送到视图的相关 JS 函数?以便它可以在相关的div中显示它?例如,我如何/可以通过以下内容:

<p style="padding:1rem;"> @for(i <- items){<h2>i.name</h2} </p>

如果我将上述内容包装在控制器函数中:

Ok(<p style="padding:1rem;"> @for(i <- items){<h2>i.name</h2} </p>).as(HTML)

理所当然,我会收到以下错误;因为代码不是纯 HTML:

在此处输入图像描述

那么有没有办法呢?或者所有模板相关引擎的关键字都不能从控制器发送到视图?并且只需要在视图文件上使用。

4

1 回答 1

1

twirl 代码在服务器上编译成常规的 scala 函数(参见https://www.playframework.com/documentation/2.5.x/ScalaTemplateUseCases#Tags-%28they-are-just-functions,-right?%29

例如,您可以创建一个像 renderItems.scala.html 这样的文件

@(items: List[Item])
<p style="padding:1rem;"> @for(i <- items){<h2>@i.name</h2} </p>

并称它为

Ok(renderItems(items))
于 2016-03-28T18:54:02.813 回答