Привязки событий Backbone для каждого экземпляра

У меня есть представление, которое создает подпредставление для каждого элемента в списке. В общем, назовем их ListView и ListItemView. Я прикрепил событие к ListItemView следующим образом:

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

У меня есть сгенерированный шаблоном html для ListItemView, который примерно похож на следующий (поменял lb/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] ВСЕ ListItemView запускают свою функцию removeItem. Если у меня он отключается от идентификатора этой модели, то я удаляю все элементы на странице. Если я отключил родительский элемент щелкнутого элемента, чтобы получить идентификатор данных, я получаю удаление для КАЖДОГО экземпляра ListItemView. Есть ли способ создать событие для конкретного экземпляра, которое будет запускать только один removeItem?

Если у меня есть ListView, удерживайте один экземпляр ListItemView и переназначайте модель ListItem и визуализируйте для каждого элемента в списке, он работает. Я получаю только одно действие (removeItem). Проблема в том, что мне нужно найти родителя целевого клика, чтобы найти атрибут data-id. Лично я считаю приведенный ниже фрагмент довольно уродливым и хочу лучшего.

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

Любая помощь, которую кто-либо оказывает, будет принята с благодарностью.


person tiny_mouse    schedule 04.01.2012    source источник
comment
Можете ли вы предоставить свой код просмотра?   -  person rr.    schedule 05.01.2012


Ответы (2)


Похоже, ваш хэш events находится в вашем ListView.

Если это так, вы можете переместить хэш events в ListItemView, и ваша функция removeItem может быть следующей

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

Если это не так, можете ли вы предоставить свой код ListView и ListItemView, чтобы я мог его просмотреть.

person Paul    schedule 04.01.2012

Дикая догадка, но возможная; проверьте, что ваш визуализированный html действителен. Возможно, дом выходит из строя из-за неправильного формата html.

person Typo Johnson    schedule 05.01.2012