В (Scala) Lift, как визуализировать оригинальный HTML из шаблона при использовании Helpers.bind - PullRequest
0 голосов
/ 18 декабря 2010

Я новичок в 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" отображалось дословно. Я уверен, что есть простой способ извлечь их из "узла", но я предполагаю, что у меня есть некоторые серьезные пробелы в моих знаниях Лифта, потому что я не могу понять, как Если бы кто-нибудь мог указать мне правильную процедуру, я был бы очень благодарен.


ОТВЕТИЛ: Спасибо за совет. В итоге я структурировал свой код так:

    "warning" -> { (n : NodeSeq) => {
                  if (it.isDangerous) { n } else { Text("") }
                 }}

Ответы [ 2 ]

1 голос
/ 18 декабря 2010

Вы можете просто привязать функцию к имени узла, которая принимает NodeSeq и возвращает NodeSeq.

Например:

def warning(in: NodeSeq): NodeSeq = doSomethingWith(in)

// ...

Helpers.bind("e", node, "warning" -> warning _)

Содержимое <e:warning>узел будет преобразован и вставлен.

0 голосов
/ 18 декабря 2010

Я не уверен в том, что вы пытаетесь сделать. Если вы хотите отобразить одно или другое, используйте ChooseTemplate и Box.

...