开始学习Backbone JS。阅读Codeschool文档。我只是不明白为什么我们需要在initialize中声明this.model.on('....')
,而不是在toggleStatus
函数中只使用'this.render();'
。请有人解释清楚。为什么我们不能在togglestatus函数中声明this.render?
下面是代码从我的文档复制粘贴:
前:
var TodoView = Backbone.View.extend({
events: {
'change input': 'toggleStatus'
},
toggleStatus: function(){
this.model.toggleStatus();
this.render(); //Doesn’t work for other model changes , WHY IT DOESN'T WORK??
},
render: function(){
this.$el.html(this.template(this.model.toJSON()));
}
}
});
后:
var TodoView = Backbone.View.extend({
events: {
'change input': 'toggleStatus'
},
initialize: function(){
this.model.on('change', this.render, this);
},
toggleStatus: function(){
this.model.toggleStatus();
},
render: function(){
this.$el.html(this.template(this.model.toJSON()));
}
});