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によってレンダリングされたイベントごとに1つずつ、テーブル全体が繰り返し印刷されます。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 に答える