在Backbone中,模板会在渲染调用之后缓存起来,而不会自动更新。如果你想要在第二次渲染调用后更新模板,你可以使用以下解决方法:
render()
方法:在第二次渲染调用后,手动调用render()
方法来更新模板。这将触发模板的重新渲染,从而更新模板内容。var MyView = Backbone.View.extend({
render: function() {
var template = _.template($('#my-template').html());
this.$el.html(template(this.model.toJSON()));
return this;
}
});
var view = new MyView();
view.render(); // 第一次渲染调用
view.render(); // 第二次渲染调用后手动更新模板
change
事件,并在事件回调函数中调用render()
方法来更新模板。var MyModel = Backbone.Model.extend({
// ...
});
var MyView = Backbone.View.extend({
initialize: function() {
this.listenTo(this.model, 'change', this.render);
},
render: function() {
var template = _.template($('#my-template').html());
this.$el.html(template(this.model.toJSON()));
return this;
}
});
var model = new MyModel();
var view = new MyView({ model: model });
view.render(); // 第一次渲染调用
model.set('attribute', 'new value'); // 模型变化时自动更新模板
使用上述方法,你可以在第二次渲染调用后手动更新模板或在模型变化时自动更新模板。