0

我正在尝试通过 Comet 动态更新 HTML 表。我有以下内容:

class EventsComet extends CometClient[Event] {
  def server = Event

  def render = {
    println("Binding on: " + defaultHtml)
    data.flatMap( event =>
      bind("event", "name" -> event.name.toString, "date" -> event.startDate.toString)
    )
  }
}

和:

<lift:comet type = "EventsComet">
    <table>
        <thead>
            <tr>
                <th>Name</th>
                <th>Date</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td><event:name />Test Name</td>
                <td><event:date />Oct. 25, 2012</td>
            </tr>
        </tbody>
    </table>
</lift:comet>

这会一遍又一遍地打印出整个表格,每个事件对应一个由 EventsComet 呈现的事件。println 语句输出整个表节点。

所以我尝试了变化:

<table>
    <thead>
        <tr>
            <th>Race</th>
            <th>Track</th>
            <th>Date</th>
        </tr>
    </thead>
    <tbody>
        <lift:comet type = "EventsComet">
            <tr>
                <td><event:name />Test Name</td>
                <td><event:date />Oct. 25, 2012</td>
            </tr>
        </lift:comet>
    </tbody>
</table>

正如预期的那样,HTML5 解析器去除了 [lift:comet] 标记并且没有发生绑定。

所以我尝试将行切换为:

<tr lift:comet = "EventsComet">
    <td><event:name />Test Name</td>
    <td><event:date />Oct. 25, 2012</td>
</tr>

...如此处的片段示例所示但使用此语法,我的 CometClient 根本没有被实例化。

任何人都可以就正确的语法提出建议吗?

EventsComet 本身运行良好;它可以毫无问题地使事件列表保持最新。我只在使用表时遇到问题(可能还有其他我还没有尝试过的高度嵌套的结构?)。

谢谢你。对于这样一个简单的问题,这一切都相当令人沮丧,并且让我只想开始使用强类型模板语言而不是使用绑定来实现我的模板。

4

1 回答 1

0

正确的语法似乎是:

<tr class="lift:comet?type=EventsComet">
    <td><event:name />Test Name</td>
    <td><event:date />Oct. 25, 2012</td>
</tr>

从这个线程: https ://groups.google.com/forum/?fromgroups=#!topic/liftweb/NUDU1_7PwmM

有时我会得到重复的行(插入到表格标题上方),但我想这与我的彗星演员本身有关。

于 2012-10-06T06:21:24.510 回答