Я за использование событий,
Я сам не хочу перемещать привязку за пределы модели, я бы оставил их там, как в оригинальном примере
var app = {};
app.evt = _.extend({}, Backbone.Events); // adding a global event aggregator
FriendList = Backbone.Collection.extend({
initialize: function(){
this.bind("add", function( model ){
alert("hey");
app.evt.trigger('addfriend', model);
})
}
});
//further in your code you can bind to that event
app.evt.bind("addfriend", function(model){
var view = new FriendView({el: 'body'});
view.render(model);
});
однако, я нахожу пример немного странным, создавая новое представление с телом в качестве элемента и рендеринг его с передачей модели функции рендеринга. Я нашел бы больше логики, если бы представление создавалось с моделью в качестве атрибута, а затем отображало содержимое в теле. но это уже другая тема.
короче говоря, я перехожу, создавая представление снаружи, слушая инициируемое событие, но привязка к коллекции остается в коде коллекции. я считаю более удобным хранить весь код коллекции в одном месте.