Backbone.js: добавить событие не запускается коллекция - PullRequest
0 голосов
/ 16 ноября 2011

У меня есть стандартная коллекция Backbone.js, определенная так:

class Observation extends Backbone.Model

class Observations extends Backbone.Collection
  model: Observation

Затем я связываю событие add, как это, в обработчике событий для события сброса коллекции:

  collectionReset: (collection) =>
    @collection.bind 'add', @elementAdded

Проблема в том, что событие не запускается.Я установил точку останова и прошелся по коду, и следующая строка (627 из backbone.js 0.5.3) останавливает событие add от запуска:

_onModelEvent: function (ev, model, collection, options) {
  if ((ev == 'add' || ev == 'remove') && collection != this) return;

И это конкретноследующее сравнение:

collection != this

Аргумент коллекции отличается от ссылки "this".

Кто-нибудь еще видел, что это происходило раньше, или они могут указать, что я делаю неправильно?

1 Ответ

0 голосов
/ 17 ноября 2011

В вашем коде есть несколько подозрительных вещей; ваш метод collectionReset принимает параметр collection, но затем выглядит так, как будто вы пытаетесь связать его, вы используете @collection, что является чем-то другим. Если вы действительно хотите вызвать bind для передаваемого параметра «collection», вам нужно использовать collection.bind, а не @collection.bind.

Я в основном связываю события из классов моделей (включая Коллекции) с Представлениями, и в этом случае вы обычно просто ссылаетесь на модель для связывания, то есть вызываете @model.bind 'add', someMethod. Из вашего кода, определяющего Observations, кажется, вы должны попробовать что-то подобное.

...