我应该在BackboneJS中的每次集合更改后调用render

时间:2012-06-25 21:28:19

标签: backbone.js backbone-views

我正在学习BackboneJS。我有几个问题。 在控制器或模型更改后重新渲染完整视图是否常见?我是否需要在渲染函数的开头清除容器?

2 个答案:

答案 0 :(得分:1)

首先,您不需要在渲染功能开始时清除容器(除非您想要清除容器)。

至于你的第一点,它显然取决于你的情况(视图有多复杂),但有时候只需要重新渲染覆盖以前内容的整个视图,你就不需要这样做了。在backbone.js中,您可以在particular attributes上收听更改,然后因为您可以访问DOM element,只需相应地更新视图的一部分。

例如

initialize : function () {    _.bind("change:name", nameChanged, this); },

nameChanged: function(event) {    this.$el.find('.name').val(this.model.get('name'); }

答案 1 :(得分:1)

1)只要视图本身具有合理的原子性,重新渲染完整视图实际上比更新视图的某些部分更容易。

2)不,你不需要清除容器,它与Backbone无关,而是与你的DOM库有关,例如jQuery和你的模板引擎,例如把手。所以你要做的就是

this.$el.html(this.template(data)); // template is a compiled Handlebars template

this.$el.html($('<div />').text('Whatever'); // using jQuery

在任何情况下,$el.html都会将HTML重新插入到视图的目标元素中。