小编jca*_*ady的帖子

Backbone.js在集合添加时触发两次渲染

在学习Backbone.js 时,我正在使用捆绑了最新版Backbone(0.9.2)的Todos示例应用程序.我的问题是,为什么应用程序设计为在向Todos集合添加模型时触发渲染事件两次?

如果我将此行放在TodoView的渲染功能中:

// Re-render the titles of the todo item.
render: function() {
  console.log("Rendering!");
  this.$el.html(this.template(this.model.toJSON()));
Run Code Online (Sandbox Code Playgroud)

然后"渲染!" 在控制台中出现两次.我理解这是因为视图将模型的change事件绑定到视图的渲染:

initialize: function() {
  this.model.bind('change', this.render, this);
Run Code Online (Sandbox Code Playgroud)

并且在addOne中调用render,它绑定到Todos的add事件:

addOne: function(todo) {
  var view = new TodoView({model: todo});
  this.$("#todo-list").append(view.render().el);
},
Run Code Online (Sandbox Code Playgroud)

但这是双重渲染设计的标准做法吗?看起来应该在创建(或进入DOM)时呈现视图,然后如果底层模型发生更改则再次呈现.在这种情况下,没有任何更改,但渲染被调用两次.

再一次,我只是学习Backbone,所以我可能会有一个基本的误解,导致我的困惑.

javascript backbone.js

8
推荐指数
1
解决办法
6382
查看次数

标签 统计

backbone.js ×1

javascript ×1