将参数传递给主干.bind()函数

时间:2017-09-08 01:57:41

标签: javascript backbone.js

我有一个呈现视频播放器和视频列表的视图。

initialize: function() {
var q = window.location.search.slice(3);
this.videos = new Videos(window.exampleVideoData);
this.videos.bind('select', this.notifyAppView, this);
if ( q ){
  this.videos.bind('fetchFinished', function(){
      console.log('should still work');
      this.render();
  }, this);
  // Any time this.videos collection changes we will re-render
  this.videoPlaying = this.videos.models[0];
  this.videos.fetch( q );
}else{
  //Collection of all videos

  // Any time this.videos collection changes we will re-render
  this.videoPlaying = this.videos.models[0];
  this.render();
}

},

这是我在视图上的初始化函数。我得到的问题是,当我将参数传递给bind函数时,错误

app.js:10 Uncaught SyntaxError: Unexpected string

这就是一行:

this.videos.bind('fetchFinished', function(){
  console.log('should still work');
  this.render();

},这个);

当我们将字符串传递给函数时,我们得到错误:

this.videos.bind('fetchFinished', function('adfadf'){
      console.log('should still work');
      this.render();
}, this);

指定一个与骨干绑定的函数的正确方法是什么?这需要一个参数?

1 个答案:

答案 0 :(得分:2)

这是不正确的语法。您应该在函数声明中指定参数的名称,而不是值。

您可以传递如下值:

this.videos.bind('fetchFinished', function(arg){
  console.log('should still work', arg); // should still work adfadf
  this.render();
}.bind(this, 'adfadf'));

请注意,第二个bind是函数对象的本机bind方法,而不是主干bind。最好使用骨干on而不是使用它的别名bind来避免混淆