我正在尝试从“Exploring Lift”一书中运行以下示例(稍作改动,即我更喜欢 CSS 绑定而不是 XML 绑定):
object Hello {
import js.{JxMap, Jx, JsCmds, JE}
import JE._
import net.liftweb.http.SHtml._
import net.liftweb.util.BindHelpers._
import JsCmds._
val names = "marius" :: "tyler" :: "derek" :: "dave" :: "jorge" :: "viktor" :: Nil
def ajaxian =
"#text" #> ajaxText("Type something", {value => {
val matches = names.filter(e => e.indexOf(value) > -1)
SetHtml("items_list", NodeSeq.Empty) &
JsCrVar("items", JsArray(matches.map(Str(_)):_*)) &
JsCrVar("func", Jx(<ul>{
JxMap(JsVar("it"), Jx(<li>{JsVar("it")}</li>))
}</ul>).toJs) &
(ElemById("items_list") ~> JsFunc("appendChild", Call("func", JsVar("items"))))
}})
}
但是,当呈现到 HTML 页面而不是同名列表中的名称时,我不断获得“JsExp(it)”项目的列表。线路应该有问题
JxMap(JsVar("it"), Jx(<li>{JsVar("it")}</li>))
Lift 缺乏关于 JavaScript 抽象层的文档,阅读书籍中的相应章节和浏览 Lift 的源代码并不能让我了解正在发生的事情。到目前为止,我唯一能想到的是使用参数Jx
创建,但我无法说服自己正确使用Derek 在他的书中提供的示例。AnonFunc
it
JsVar("it")