リスト内のアイテムごとにサブビューを作成するビューがあります。一般的に、それらをListViewおよびListItemViewと呼びましょう。ListItemViewに次のようなイベントを添付しました。
events: {
"click .remove": "removeItem"
}
ListItemViewのテンプレートで生成されたhtmlは、ほぼ次のようになっています(lb / rbを{/}に置き換えたため、「違法な」htmlが表示されます)。
{div class = "entry" data-id="this_list_item_id"}ここにいくつかのスタッフ
{ divclass
= "meta"}
{a class = "remove" href = "javascript :;"} [x] {/ a}
{/ div}
{/ div}
問題は、[x]のいずれかをクリックすると、すべてのListItemViewがremoveItem関数をトリガーすることです。このモデルのIDから外れる場合は、ページ上のすべてのアイテムを削除します。クリックしたアイテムの親の親要素から離れてデータIDを取得すると、各ListItemViewインスタンスが削除されます。単一のremoveItemのみをトリガーするインスタンス固有のイベントを作成する方法はありますか?
ListViewにListItemViewの単一インスタンスを保持させ、ListItemモデルを再割り当てして、リスト内の各アイテムに対してレンダリングする場合、それは機能します。1つのアクション(removeItem)がトリガーされるだけです。問題は、データID属性を見つけるために、クリックターゲットの親の親を見つける必要があることです。個人的には、以下のスニペットはかなり醜く、より良い方法が必要だと思います。
var that = $($(el.target).parent()).parent();
誰かが与えるどんな助けも大いに感謝されるでしょう。