Backbone.js 我应该在BackboneJS中每次集合更改后调用render吗
我在学BackboneJS。我有几个问题。Backbone.js 我应该在BackboneJS中每次集合更改后调用render吗,backbone.js,backbone-views,Backbone.js,Backbone Views,我在学BackboneJS。我有几个问题。 更改控制器或模型后,重新渲染完整视图是否常见?我是否需要在渲染函数开始时清除容器?首先,您不需要在渲染函数开始时清除容器(当然,除非您想清除容器) 至于你的第一点,这显然取决于你的环境(视图有多复杂),但是,尽管有时候只是重新呈现整个视图覆盖以前的内容可能会有好处,但你不需要这样做。在backbone.js中,由于您可以访问视图的justupdate部分,因此您可以在和上侦听更改 比如说 initialize : function () { _.
更改控制器或模型后,重新渲染完整视图是否常见?我是否需要在渲染函数开始时清除容器?首先,您不需要在渲染函数开始时清除容器(当然,除非您想清除容器) 至于你的第一点,这显然取决于你的环境(视图有多复杂),但是,尽管有时候只是重新呈现整个视图覆盖以前的内容可能会有好处,但你不需要这样做。在backbone.js中,由于您可以访问视图的justupdate部分,因此您可以在和上侦听更改 比如说
initialize : function () { _.bind("change:name", nameChanged, this); },
nameChanged: function(event) { this.$el.find('.name').val(this.model.get('name'); }
1) 只要视图本身具有合理的原子性,重新渲染完整视图实际上比更新部分视图容易
2) 不,您不需要清除容器,它与主干无关,而是与您的DOM库(例如jQuery)和模板引擎(例如Handlebar)有关。所以你要做的是
this.$el.html(this.template(data)); // template is a compiled Handlebars template
或
this.$el.html($('').text('Whatever');//使用jQuery
在任何情况下,$el.html
都会将html重新插入到视图的目标元素中
this.$el.html($('<div />').text('Whatever'); // using jQuery