Ответ 1
События change
от моделей доходят до коллекции. (Коллекция _onModelEvent
-функция в аннотированном источнике. Этот метод в основном принимает все события из моделей и запускает их в коллекции.
Это приводит к
- Атрибут модели установлен
- Триггеры модели
change
- Коллекция уловов
change
- Триггеры коллекции
change
Итак,
this.collection.bind("replace reset add remove", this.renderRows, this);
необходимо заменить на это
this.collection.bind("change reset add remove", this.renderRows, this);
Надеюсь, это поможет!
P.S.
Мое личное мнение заключается в том, что вы не должны перерисовывать всю таблицу, если изменится только одна модель. Вместо этого сделайте каждую строку таблицы представлением само по себе, которое имеет соответствующую модель в качестве своей модели, а затем отреагирует на изменения атрибутов. Нет смысла перерисовывать 500 ячеек таблицы, если вы нацеливаете только один.
UPDATE
И теперь вы должны использовать метод on
для привязки к событиям.
collection.on("change reset add remove", this.renderRows, this);
Если вы используете BB 1.0, и это событие прослушивается в пределах View
, я предлагаю перейти к использованию нового listenTo
для привязки в событиях, что также позволяет легко отпереть при вызове view.remove()
. В этом случае вы должны сделать:
// assuming this is the view
this.listenTo(collection, "change reset add remove", this.renderRows);