我有一个视图,它为列表中的每个项目创建一个子视图。我们一般称它们为 ListView 和 ListItemView。我在 ListItemView 上附加了如下事件:
events: {
"click .remove": "removeItem"
}
我为 ListItemView 生成了模板生成的 html,大致如下所示(将 lb/rb 交换为 {/},以便您可以看到“非法”html):
{div class="entry" data-id="this_list_item_id"}
这里有一些东西
{div class="meta"}
{a class="remove" href="javascript:;"}[x]{/a}
{/ div}
{/div}
问题是,当单击任何 [x] 时,所有 ListItemViews 都会触发它们的 removeItem 函数。如果我让它脱离了这个模型的 id,那么我会删除页面上的所有项目。如果我让它离开单击项目的父元素的父元素来获取数据 ID,我会删除每个 ListItemView 实例。有没有办法创建一个只会触发单个 removeItem 的特定于实例的事件?
如果我让 ListView 持有 ListItemView 的单个实例并重新分配 ListItem 模型并为列表中的每个项目呈现它就可以工作。我最终只触发了一个动作(removeItem)。问题是,我必须找到点击目标的父级才能找到 data-id attr。就个人而言,我认为下面的代码片段相当难看,想要更好的方法。
var that = $($(el.target).parent()).parent();
任何人提供的任何帮助将不胜感激。