Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.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

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 backbone.js集合绑定了这种混乱_Javascript_Backbone.js - Fatal编程技术网

Javascript backbone.js集合绑定了这种混乱

Javascript backbone.js集合绑定了这种混乱,javascript,backbone.js,Javascript,Backbone.js,以下是“我的收藏”视图的一个示例: mod.AppListView = Backbone.View.extend({ initialize: function() { var self = this mod.collection.bind('add', self.addOne); mod.collection.bind('reset', self.addAll); _.bindAll(self, 'addOne', 'addAll'

以下是“我的收藏”视图的一个示例:

  mod.AppListView = Backbone.View.extend({
    initialize: function() {
      var self = this

      mod.collection.bind('add', self.addOne);
      mod.collection.bind('reset', self.addAll);

      _.bindAll(self, 'addOne', 'addAll');


      this.addAll();
    },

    events: {
    },

    addOne: function(myModel) {
      var view = new ListItemView({
        model: myModel
      });
    },

    addAll: function() {
      mod.collection.each(this.addOne);
    },
  });
在初次运行时,这工作正常。但在随后的重置addAll时,这将成为集合而不是视图,因此addOne无法工作

要解决此问题,我必须执行以下操作:

mod.collection.bind('reset', self.addAll, this);
但我认为这就是宾德尔的重点?这不应该把这个设置为视图吗?这可以解释吗?是否有一种方法可以始终确保这一点指向视图而不是集合


谢谢。

。.bindAll
必须在引用该方法之前。你把它倒过来了

  _.bindAll(self, 'addOne', 'addAll');

  mod.collection.bind('add', self.addOne);
  mod.collection.bind('reset', self.addAll);
当您调用
\uuu.bindAll
时,它会将您指定的方法替换为已包装/代理/修饰的方法,以确保始终正确设置上下文。由于该方法正在被替换,因此对该方法的任何引用都必须在替换发生后进行。否则,引用将指向原始方法,
\uu.bindAll
将显示为不起作用


与第三个参数相比,
\uuu.bindAll
。。。挑一个你喜欢的。我更喜欢在调用
.bind
时传入第三个参数,但那只是我自己。不过,在某些情况下,我必须使用
\uu.bindAll
。它们都做相同的事情,只是用不同的方式来做而已。

\uz.bindAll
必须在引用该方法之前。你把它倒过来了

  _.bindAll(self, 'addOne', 'addAll');

  mod.collection.bind('add', self.addOne);
  mod.collection.bind('reset', self.addAll);
当您调用
\uuu.bindAll
时,它会将您指定的方法替换为已包装/代理/修饰的方法,以确保始终正确设置上下文。由于该方法正在被替换,因此对该方法的任何引用都必须在替换发生后进行。否则,引用将指向原始方法,
\uu.bindAll
将显示为不起作用

与第三个参数相比,
\uuu.bindAll
。。。挑一个你喜欢的。我更喜欢在调用
.bind
时传入第三个参数,但那只是我自己。不过,在某些情况下,我必须使用
\uu.bindAll
。他们两人做同样的事情,只是用不同的方式