Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 我应该在BackboneJS中每次集合更改后调用render吗_Backbone.js_Backbone Views - Fatal编程技术网

Backbone.js 我应该在BackboneJS中每次集合更改后调用render吗

Backbone.js 我应该在BackboneJS中每次集合更改后调用render吗,backbone.js,backbone-views,Backbone.js,Backbone Views,我在学BackboneJS。我有几个问题。 更改控制器或模型后,重新渲染完整视图是否常见?我是否需要在渲染函数开始时清除容器?首先,您不需要在渲染函数开始时清除容器(当然,除非您想清除容器) 至于你的第一点,这显然取决于你的环境(视图有多复杂),但是,尽管有时候只是重新呈现整个视图覆盖以前的内容可能会有好处,但你不需要这样做。在backbone.js中,由于您可以访问视图的justupdate部分,因此您可以在和上侦听更改 比如说 initialize : function () { _.

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

首先,您不需要在渲染函数开始时清除容器(当然,除非您想清除容器)

至于你的第一点,这显然取决于你的环境(视图有多复杂),但是,尽管有时候只是重新呈现整个视图覆盖以前的内容可能会有好处,但你不需要这样做。在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