我有以下骨干视图。我有一个疑问。如果删除模型,我会在取消后调用渲染(第一种方法),另一种方法是使用初始化函数,这会使视图内的模型监听事件发生变化。(第二种方法) )
有人可以让我知道,一和二之间的区别。至于哪两个更好。
第一种方法 var AppointmentView = Backbone.View.extend({ 模板:_.template('“>'+ '<%= title%>' + 'X'),
events: { "click a": "cancel" },
cancel: function(){
this.model.cancel();
this.render(); // rendering after cancel
},
render: function(){
this.$el.html(this.template(this.model.toJSON()));
}
});
第二种方法
var AppointmentView = Backbone.View.extend({
template: _.template('<span class="<% if(cancelled) print("cancelled") %>">' +
'<%= title %></span>' +
'<a href="#">x</a>'),
initialize: function(){
this.model.on("change", this.render, this);
},
events: { "click a": "cancel" },
cancel: function(){
this.model.cancel();
},
render: function(){
this.$el.html(this.template(this.model.toJSON()));
}
});
答案 0 :(得分:0)
我会定义一个自定义cancelled
事件,从您的cancel
方法触发该事件,并在视图中绑定到该事件。
var Appointment = Backbone.Model.extend({
cancel: function() {
//cancellation code...
this.trigger('cancelled', this);
}
});
var AppointmentView = Backbone.Model.extend({
initialize: function() {
this.listenTo(this.model, 'cancelled', this.render);
}
});
这样,即使从视图本身以外的地方取消模型,您的视图也会重新渲染,但您仍然可以获得特定行为或仅在cancel
上重新呈现,而不是每次更改。