2012-01-04 11 views
1

リスト内の項目ごとにサブビューを作成するビューがあります。一般的にListViewとListItemViewと呼んでいます。 ListItemViewに次のように私は、イベントを添付しました:インスタンス・イベント・バインディングごとのバックボーン

events: { 
    "click .remove": "removeItem" 
} 

私は、およそ次のようなものです({/}のスワップポンド/ RBので、あなたが「違法」のhtmlを見ることができます)ListItemView用テンプレート生成されたHTMLを持っています:[X]のいずれかをクリックは、ListItemViewsのすべてが彼らのremoveItem機能をトリガ

{div class="entry" data-id="this_list_item_id"}
SOME STUFF HERE
{div class="meta"}
{a class="remove" href="javascript:;"}[x]{/a}
{/div}
{/div}

問題があります、。私がこのモデルのIDから離れると、そのページのすべてのアイテムをドロップします。データIDを取得するためにクリックされたアイテムの親の親要素から離した場合、各ListItemViewインスタンスの削除が取得されます。 1つのremoveItemだけをトリガするインスタンス固有のイベントを作成する方法はありますか?

ListViewにListItemViewの1つのインスタンスを保持させ、ListItemモデルを再割り当てして、リスト内の各アイテムに対してレンダリングすれば動作します。私は1つのアクション(removeItem)がトリガーされることに終わります。問題は、クリックターゲットの親の親がdata-id属性を見つける必要があることです。個人的には、以下のスニペットはむしろ醜いので、より良い方法を望んでいると思います。

var that = $($(el.target).parent()).parent(); 

誰でも助けていただければ幸いです。

+0

あなたもビューコードを提供できますか? –

答えて

1

あなたのListViewにはeventsハッシュがあるようです。そうでない場合

それがある場合、あなたはListItemViewとあなたのremoveItem機能にeventsハッシュを移動することができますが、以下の

removeItem: function() { 
    this.model.collection.remove(this.model); 
} 

することができ、あなたは私はあなたのListViewコントロールとListItemViewコードを提供することができますそれを見ることができます。

0

野生の推測ですが可能です。レンダリングされたHTMLが有効であることを確認してください。間違ったHTMLのためにDOMが問題に陥っている可能性があります

関連する問題