3

我正在尝试从“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 在他的书中提供的示例。AnonFuncitJsVar("it")

4

0 回答 0