Иметь просмотр прослушать событие коллекции

У меня есть вид myView и коллекция myCollection. Когда я add модель до myCollection, событие add запускается myCollection. Как я могу myView прослушать это событие add?

Ответ 1

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

Здесь пример кода

MyView = Backbone.View.extend({
  initialize: function() {
    this.collection.bind('add', this.onModelAdded, this);
  },

  ...other view functions

  onModelAdded: function(addedModel) {
    //do something
  }
}

И так вы передаете коллекцию при создании экземпляра представления

var view = new MyView({ collection: myCollection });

Ответ 2

После версии. 0.9.9 (добавлено 13 декабря 2012 г.) рекомендуется использовать listenTO.

В соответствии с этим:

var MyView = Backbone.View.extend({

    initialize: function() {
        this.listenTo(this.collection, 'add', this.onModelAdd);
    },
    onModelAdd: function(model) {
        // do something
    }
});

var myCollection = new MyCollection();
var myView = new MyView({collection: myCollection});

Ответ 3

Вам нужно привязать ваше представление, чтобы прослушать событие "добавить" вашей коллекции:

var MyView = Backbone.View.extend({
    initialize: function(){
        this.collection.bind('add', this.somethingWasAdded, this)
    },
    somethingWasAdded: function(){

    }
});
new MyView({collection: myCollection})