考虑到ChoiceItem是一样的东西
val choiceItem = ChoiceItem("Some key", )
,并调用toForm方法如下
ChoiceHolder(Seq(choiceItem)).toForm
你可以使用
ChoiceHolder.htmlize = ci => evalElemWithId((id, e) => e ++ {ci.key.toString})(ci.xhtml)
可能返回类似
NodeSeq(, Some key)
,或者,如果你想环绕
ChoiceHolder.htmlize = ci => evalElemWithId((id, e) => {e} {ci.key.toString})(ci.xhtml)
,让你
NodeSeq(Some key)
有点复杂标签:evalElemWithId(进口net.liftweb.util.Helpers.evalElemWithId)采用NodeSeq的第一个元素(例如choiceItem.xhtml),并为其添加id属性。之后,匿名函数将被调用,它将接收此标识,以便您可以在标签的for属性中使用它。
编辑 注意ChoiceHolder.htmlize是怎样的一个全球性的功能将通过所有ChoiceHolder.toForm调用之前调用的。所以如果你想要在任何地方都有相同的布局,那么全局改变它就是有意义的。
如果你只是想在一种情况下有一个明确的布局,你可能更好的只是调用一些choiceToForm方法。