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
Javascript 主干和下划线js为什么我需要使用bindAll_Javascript_Backbone.js_Underscore.js - Fatal编程技术网

Javascript 主干和下划线js为什么我需要使用bindAll

Javascript 主干和下划线js为什么我需要使用bindAll,javascript,backbone.js,underscore.js,Javascript,Backbone.js,Underscore.js,我正在以下网址学习教程: 其中包含以下代码片段: (function($){ var ListView = Backbone.View.extend({ el: $('body'), // attaches `this.el` to an existing element. initialize(): Automatically called upon instantiation. Where you make all types of bindings, excludin

我正在以下网址学习教程:

其中包含以下代码片段:

(function($){
  var ListView = Backbone.View.extend({    
    el: $('body'), // attaches `this.el` to an existing element.
initialize(): Automatically called upon instantiation. Where you make all types of bindings, excluding UI events, such as clicks, etc.

    initialize: function(){
      _.bindAll(this, 'render'); // fixes loss of context for 'this' within methods

       this.render(); // not all views are self-rendering. This one is.
    },

    render: function(){
      $(this.el).append("<ul> <li>hello world</li> </ul>");
    }
  });
  var listView = new ListView();      
})(jQuery);
(函数($){
var ListView=Backbone.View.extend({
el:$('body'),//将'this.el'附加到现有元素。
initialize():在实例化时自动调用。您可以在其中进行所有类型的绑定,不包括UI事件,如单击等。
初始化:函数(){
_.bindAll(this'render');//修复了方法中“this”上下文的丢失
this.render();//并非所有视图都是自呈现的。这一个是。
},
render:function(){
$(this.el)。追加(“
  • 你好,世界
    • ”; } }); var listView=new listView(); })(jQuery);
在initialize方法中,为什么需要执行bindAll。我对bindAll的理解是,它允许在调用render时使用它的上下文


既然我们调用这个.render()的上下文不是这样的…为什么我们需要
bindAll

在这个代码中,
bindAll
对于“render”来说确实是多余的。但是当在其他上下文中调用
render
时(特别是作为回调调用时),它很有用。

在这段代码中,“render”的
bindAll
确实是多余的。但是,当在其他上下文中调用
render
时(特别是作为回调调用),它非常有用