Ваш ItemView должен обрабатывать кнопку «удалить». Последовательность выглядит следующим образом:
- Вы нажали кнопку удалить .
- Это вызывает событие в соответствующем ItemView.
- ItemView уничтожает модель.
- Уничтожение модели вызывает событие
'destroy'
из модели.
- ItemView прослушивает событие
'destroy'
и удаляет себя, когда это происходит.
Итак, ваш ItemView будет выглядеть примерно так:
class ItemView extends Backbone.View
events:
'click .del': -> @model.destroy()
initialize: ->
@model.on('destroy', @remove)
render: ->
# ...
@
remove: =>
$(@el).remove()
# And whatever other cleanup tasks you have...
Таким образом, ваши взгляды будут реагировать соответствующим образом, если одна из ваших моделей Предметов будет уничтожена кем-то другим.
Демо: http://jsfiddle.net/ambiguous/KMT74/1/
И если кто-то еще визуализирует кнопку удаления, вам просто нужно вызвать destroy
для соответствующего экземпляра модели, и ItemView сам удалится. См. Пример kill first в демоверсии. Вы можете использовать атрибут data-id
в ItemView el
, чтобы связать модели с их представлениями, а затем сделать что-то вроде:
your_destroy_button_handler: (ev) ->
item = @collection.get($(ev.target).data('id'))
item.destroy()
но для ItemView будет понятнее отобразить собственную кнопку удаления.
Также это:
events:
"click #destroy-button" : "destroy"
будет проблемой, так как у вас будут дубликаты id
атрибутов, вместо этого используйте класс для кнопки:
events:
"click .destroy-button" : "destroy"