Магистральные события при стрельбе по модели (Двойная стрельба) - PullRequest
6 голосов
/ 31 марта 2012

Разрабатываемое мной приложение Backbone имеет коллекцию и модель, а также связанные представления для каждого элемента.

https://gist.github.com/2255959

Когда я нажимаю на PostView, неожиданно событие запускается в коллекции без какой-либо проводки.

Я подумал, что мне нужно связать событие с моделью, а затем запустить это событие в коллекции. Разве это не так? Может ли коллекция автоматически наследовать события, запущенные ее дочерними моделями?

Я не уверен, но я думаю, что это как-то связано с вложенными представлениями, и, возможно, событие связывается в обоих местах, а не только во внутреннем el.

1 Ответ

15 голосов
/ 31 марта 2012

Из тонкой инструкции :

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

Так что да, коллекция прослушивает события на всех своих моделях и передает их.

Например, при простой настройке, подобной этой:

class M extends Backbone.Model

class C extends Backbone.Collection
    model: M

c = new C
c.on('change', (model, opts) -> console.log('Change on collection'))

Выполнение c.first().set(...) вызовет обработчик события.

Демо: http://jsfiddle.net/ambiguous/wwjnK/

...