События - это то, что вам нужно, когда модель добавляется в коллекцию (новая заметка), она вызывает событие add
в самой коллекции
, поэтому в вашей коллекции вы можете отловить это и сделать что-то сit.
var myCollection = Backbone.Collection.extend({
//... whole lot of irrelevant stuff goes here :)
});
var myCollectionListView = Backbone.View.extend({
initialize: function(){
_.bindAll(this, 'onAdd');
this.collection.bind('add', this.onAdd);
}
onAdd: function(m){
// either re-render the whole collection
this.render();
// or do something with the single model
var item = $('<li>' + m.get('property') + '</li>');
$('#listview').append(item);
}
});
var myItems = new myCollection({});
var listview = new myCollectionListView({ collection: myItems });
, тогда у вас есть добавленная заметка (то же самое, что вы могли бы сделать для события reset
или remove
, которое обрабатывает сброс коллекции с новым списком моделей,и удаление модели из коллекции)
Допустим, вы обновили заметку, это должно быть сделано с той же системой событий, хотя для этого можно использовать событие change
.хитрость здесь в том, что представление списка отображает не сами элементы модели, а представление списка создает представление модели для каждой модели.в этом виде модели (вы назвали его NoteView
) вы можете выполнить тот же процесс, что и выше, и связать его с собственной моделью:
initialize: function() {
this.bind('change', this.modelChanged);
},
modelChanged: function(m){
// do something, re-render the view, or anything else...
}