У вас также есть этот вариант:
this.listenTo(this.approvals, 'sync', _.partial(this.renderData, 'sync'));
this.listenTo(this.approvals, 'delete', _.partial(this.renderData, 'delete'));
и renderData
(или же вы хотите назвать это) получают один дополнительные параметры, которые вы передаете с _.partial
(карри)
renderData: function(eventName, collection, resp, options) {}
это метод подпись: http://backbonejs.org/docs/backbone.html#section-133 collection.trigger('sync', collection, resp, options);
удаление выглядит же
Похоже, это как простой пример: (косяк делать delete
, но я могу вызвать change
, просто подождите 5 секунд)
var Model1 = Backbone.Model.extend({
url: 'http://jsonplaceholder.typicode.com/posts/1'
});
var View1 = Backbone.View.extend({
template: _.template('<%= eventName %> - <%= body %>'),
initialize: function() {
// render something as soon as possible
this.render();
this.model = new Model1();
this.listenTo(this.model, 'sync', _.partial(this.renderData, 'sync'));
this.listenTo(this.model, 'change', _.partial(this.renderData, 'change'));
this.model.fetch();
// to test it
setTimeout(_.bind(function(){this.model.set('body', 'it was changed')}, this), 5000);
},
// this is the normal sync/change function signature only with one extra param `eventName`
// which is being `curry`'ed in
renderData: function(eventName, model, resp, options) {
this.$el.html(this.template({
'eventName': eventName,
'body': model.get('body')
}));
return this;
},
render: function() {
this.$el.html('nothing to see here');
return this;
}
});
new View1({el: $('body').append($('<div>'))});
Выполнить его здесь: http://jsfiddle.net/tLaLykk8/
is 'delete e' пользовательское событие или вы хотели использовать 'remove' ..? Мы можем прийти к решению, основанному на том, что delete –
используется для отслеживания удаления какой-либо вещи из коллекции, а не обычая. –
Нет события 'delete' в магистрали согласно [docs] (http://backbonejs.org/#Events-catalog) –