我正在尝试从“Exploring Lift”一书中运行以下示例(稍加修改,即我更喜欢通过XML绑定进行CSS绑定):
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>))
缺少JavaScript抽象层的文档,阅读书中的相应章节,浏览Lift的来源并不能让我了解正在发生的事情。我唯一可以理解的是,Jx
创建了带有AnonFunc
参数的it
,但我不能说服自己在Derek提供的示例中正确使用JsVar("it")
在他的书中。