2012-01-04 42 views
1

我有一個視圖,它爲列表中的每個項目創建一個子視圖。通常我們稱之爲ListView和ListItemView。我重視的事件上ListItemView如下:每個實例事件綁定的骨幹

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

我有模板生成的HTML代碼中ListItemView即大約類似於以下(換磅/爲RB {/}這樣你就可以看到「非法」 HTML) :

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

的問題是,當所有的[X]的點擊,所有的ListItemViews的觸發他們的removeItem功能。如果我把它放到這個模型的ID上,那麼我將所有的項目放在頁面上。如果我已經將單擊項目的父元素的父元素去掉以獲取數據標識,那麼我會爲每個ListItemView實例獲取一個刪除。有沒有辦法創建一個只觸發單個removeItem的特定於實例的事件?

如果我有ListView保存ListItemView的單個實例,並重新分配ListItem模型,併爲列表中的每個項目渲染它的作品。我只能結束一個動作(removeItem)被觸發。問題是,我必須找到點擊目標父級的父級才能找到data-id attr。就我個人而言,我認爲下面的代碼片段相當難看,想要更好的方法。

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

任何人的幫助將不勝感激。

+0

您是否也可以提供您的視圖代碼? – 2012-01-04 22:02:30

回答

1

好像你的events散列在你的ListView上。

如果是,那麼你可以在events哈希移至ListItemView和你removeItem功能可以是以下

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

如果不是這種情況,您可以提供您的ListView和ListItemView代碼,所以我可以看看它。

0

瘋狂的猜測,但可能;檢查你的呈現的html是否有效。這可能是由於格式錯誤導致dom進入tiz