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
为什么bindAll会出现在backbone.js视图中?_Backbone.js_Underscore.js - Fatal编程技术网

为什么bindAll会出现在backbone.js视图中?

为什么bindAll会出现在backbone.js视图中?,backbone.js,underscore.js,Backbone.js,Underscore.js,在主干网中,代码有几个地方使用.bindAll(这个,…)。具体来说,它用于两个视图的初始化功能。据我所知,有必要执行以下操作: this.$('.todo-content').text(content); 但是,当人们能够做到的时候,为什么要做上述事情呢 $('.todo-content').text(content); ?此。$将jQuery的上下文限制为视图的元素,因此操作更快 另外,this.$('.todo item')将找不到视图元素外部具有todo item类的元素。..bin

在主干网中,代码有几个地方使用
.bindAll(这个,…)
。具体来说,它用于两个视图的
初始化
功能。据我所知,有必要执行以下操作:

this.$('.todo-content').text(content);
但是,当人们能够做到的时候,为什么要做上述事情呢

$('.todo-content').text(content);

此。$
将jQuery的上下文限制为视图的元素,因此操作更快

另外,
this.$('.todo item')
将找不到视图元素外部具有
todo item
类的元素。

..bindAll(this,…)
不仅对于
this.$(选择器).doSomething()是必需的
但通常要确保视图方法中的
始终指向视图本身

例如,如果我们想在模型更改时刷新视图,我们将视图的
render
方法绑定到模型的
change
事件:

initialize: function() {
    this.model.bind( 'change', this.render );
},

如果没有
.bindAll(这个,'render')
,当模型更改时,
render
中的
这个
将指向模型,而不是视图,因此我们既没有
这个.el
也没有
这个。$
或任何其他视图的属性可用。

从主干0.5.2开始,不再需要使用.bindAll(this…)设置“bind”回调函数的上下文,因为现在可以将第三个参数传递给bind(),该参数将设置回调的上下文(即“this”)

例如:

var MyView = Backbone.View.extend({
  initialize: function(){
    this.model.bind('change', this.render, this);
  },
  render: function(){
    // "this" is correctly set to the instance of MyView
  }
});

“this.model.bind('change',this.render,this)”一行只会让我头晕目眩。试试coffeescript及其=>操作符。注意
this.bind
(或
this.model.bind
)做一件与
\uuu.bind
完全不同的事情。我花了一段时间才意识到。@JonatanLittke right,主干绑定是“on”的别名。不建议这样做-更建议使用this.listenTo(this.model,'change:id',this.render);因为当您破坏视图时,侦听器将被删除