在 (Scala) Lift 中,使用 Helpers.bind 时如何从模板渲染原始 HTML
我是 Scala/Lift 初学者,在渲染每个项目上带有可选“标签”的列表时遇到问题。
我的 HTML 模板显示
<lift:Items.list>
<e:name>Rock</e:name><br />
<e:warning><span style="color:#ff0000;">DANGER!</span></e:warning>
</lift:Items.list>
,在我拥有的 Items.scala 上
def list(node : NodeSeq) : NodeSeq = {
getItems flatMap( it => {
Helpers.bind("e", node,
"name" -> { Text(it.name) },
"warning" -> {
if (it.isDangerous) { <<INSERT HTML FROM TEMPLATE>> }
else { Text("") }
}
)
})
}
,在某些情况下,我希望逐字呈现“e:warning”标记的内容。我确信有一种简单的方法可以从“节点”中提取它们,但我想我的 Lift 知识存在一些重大差距,因为我不知道如何进行。 如果有人能向我指出正确的程序,我将非常感激。
回答: 谢谢你的建议。我最终像这样构建我的代码:
"warning" -> { (n : NodeSeq) => {
if (it.isDangerous) { n } else { Text("") }
}}
I'm a Scala/Lift beginner and I'm having trouble with rendering a list with optional "tags" on each item.
My HTML template says
<lift:Items.list>
<e:name>Rock</e:name><br />
<e:warning><span style="color:#ff0000;">DANGER!</span></e:warning>
</lift:Items.list>
And on the Items.scala I have
def list(node : NodeSeq) : NodeSeq = {
getItems flatMap( it => {
Helpers.bind("e", node,
"name" -> { Text(it.name) },
"warning" -> {
if (it.isDangerous) { <<INSERT HTML FROM TEMPLATE>> }
else { Text("") }
}
)
})
}
I'd like to, in certain cases, have the contents of the "e:warning" tag rendered verbatim. I'm sure there's an easy way to extract them from "node", but I guess I have some major gaps in my Lift knowledge because I can't figure out how.
If anyone could point out the proper procedure to me I'd be very thankful.
ANSWERED:
Thanks for the advice. I ended up structuring my code like this:
"warning" -> { (n : NodeSeq) => {
if (it.isDangerous) { n } else { Text("") }
}}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您只需将一个函数绑定到节点名称,该函数接受
NodeSeq
并返回NodeSeq
。例如:
节点的内容将被转换和插入。You can simply bind a function to the node’s name which takes a
NodeSeq
and returns aNodeSeq
.E.g.:
The contents of the
<e:warning>
node will then be transformed and inserted.我不确定你想做的事情的目的。如果您想显示一件事或另一件事,请使用 ChooseTemplate 和 Box。
I'm not sure on the purpose of what you are trying to do. If you want to display one thing or the other, use chooseTemplate and a Box.