私は、BackboneをCoffeeScriptとHandlebarsと組み合わせて使用して検索結果ページを作成しています。 2つのビューがあります.1つは結果リスト(ListView)、もう1つは単一の結果(ResultView)です。簡体字コード:新しく作成されたDOM要素にバックボーンビューを再割り当て
ListView = Backbone.View.extend
el: $("ul#results")
...
addItem: (result) ->
resultView = new ResultView({
model: result
})
resultView.parentView = this
this.el.append(resultView.render().el)
ResultView = Backbone.View.extend
tagName: "li"
className: "result"
events:
...
短い説明:
は、リストビューは結果がリストビューに追加されul#results
- 、ResultViewが作成され、その親の知識を持っており、レンダリングそれ自体
- 要素について
li.result
が作成されました(デフォルトのバックボーン動作)
これは(簡体字)私は、検索結果をレンダリングするために使用しているテンプレートです:私は、私のバックボーンResultViewにli.result
を定義と中:あなた自身を発見したかもしれないとして、ここでは
<li class="result">
<h1>
<a href="{{link}}">{{title}}</a>
</h1>
<p>{{snippet}}</p>
</li>
は、私の難問です私のテンプレート。私ははは何をすることはできません。
- バインドResultView私のテンプレートで
li.result
に、それはDOM - にはまだ存在していないので、私はまだそれを必要とするので、私のテンプレートから
li.result
を削除しますJavaScriptが有効になっていないユーザーのためにページサーバー側をレンダリングする
要素をインスタンス化した後、要素にBackboneビューを(エレガントに)再割り当てする方法はありますか?単純に言えば、ResultViewを一時要素に参照し、テンプレートをレンダリングしてからul#result
に移動できますか?それとも私はそれを間違った方法で見ていますか?
ありがとうございます!
ありがとう!私は実際にあなたの答えをScott Harveyのものと組み合わせました。私はレンダリングトリガを使用し、新しい 'li.result'を再割り当てして、イベントがバインドされていることを確認するために@delegateEventsを使用しました。 – Phortuin