我有这个集合的集合和表格视图。
App.Views.TableContainer = Backbone.View.extend({
el: '#some-table,
clearTable: function(){
this.collection.each(function(person){
person.set('deleteMe', 1);
});
}
});
表格中每一行的视图:
App.Views.PersonRow = App.Views.BaseViewTemplate.extend({
template: template("person-row-template"),
tagName: 'tr',
events: {
'click' : 'removeFromTable'
},
initialize: function(){
this.model.on('change', this.removeRow(), this);
},
removeRow: function(){
console.log('removing');
console.log(this.model.toJSON());
if(this.model.get('deleteMe') == 1){
this.$el.remove();
App.publisherTableContainer.removeFromContainer(this.model);
}
},
removeFromTable: function(e){
var me = this;
this.$el.fadeOut(300);
App.personTableContainer.removeFromContainer(this.model);
}
});
执行TableContainer的clearTable时,PersonRow的函数removeRow没有执行(遗憾)
有什么想法吗?
谢谢! 罗伊
答案 0 :(得分:3)
错误是:(这是常见的,也可能是您的更改功能不起作用的原因)
this.model.on('change', this.removeRow(), this);
应该是:
this.model.on('change', this.removeRow, this);
on函数的第二个参数应该是一个回调函数。现在你发送removeRow返回的任何内容。如果函数实际上返回一个回调函数,这将有效,但我想这不是在这种情况下:)