2012-01-04 41 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