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自体は正常に機能します。イベントのリストを問題なく最新の状態に保つことができます。私はテーブルを使用するだけで問題に遭遇します(そしておそらく私がまだ試したことがない他の高度にネストされた構造?)。
ありがとうございました。これは、このような単純な問題に対してはかなり苛立たしいことであり、バインディングを使用するのではなく、強く型付けされたテンプレート言語でテンプレートの実装を開始したいと思うようになります。