使用.bind(this)

时间:2017-05-02 10:12:22

标签: javascript backbone.js

我正在尝试调用我的ajax api调用成功的方法。我已将此(上下文)存储在局部变量中,但仍无法获取该视图的上下文并获得错误that.setPdfUrl不是函数。重要的是我通过pub / sub机制调用方法。 我的代码看起来像 -

kf.Events.off('getPdfUrl');
kf.Events.on('getPdfUrl', this.getPdfUrl);

  getPdfUrl: function() {
   var that = this;
   $.ajax({
     url: kf.Settings.fileGeneratorUrl() + "/ikfc/singlereport",
     type: 'POST',
     data: {
       //content
     },
     success: function(result) {
        that.setPdfUrl(kf.Settings.fileGeneratorUrl() + '/download?guid=' + 
        result.Message);
     }
   });

  }.bind(this),

setPdfUrl: function(url){
    this.pdfUrl = url;
  }

获取

  

未捕获的TypeError:that.setPdfUrl不是函数

2 个答案:

答案 0 :(得分:0)

我通过在initialize -

绑定上下文得到了解决方案
kf.Events.on('getPdfUrl', this.getPdfUrl.bind(this))

答案 1 :(得分:-1)

您可以移动以下行。

getPdfUrl:function(){    var that = this;

更改为

var that = this;  getPdfUrl:function(){

它会起作用,有多种方法可以实现这一点。但是现在,你可以使用它。