使用第三方插件时的打字稿回调

时间:2013-11-18 03:26:02

标签: javascript ajax typescript

在典型的javascript中,我在进行ajax调用时一直在使用这种模式:

myFunction() {
  var self = this;
  $.ajax({
  // other options like url and stuff
  success: function () {
      self.someParsingFunction
    }
  }
}

我正在使用jquery.form.js插件:http://malsup.com/jquery/form/#ajaxForm

发布表单时,我这样做了:

var successCallback: (data: any, textStatus: string, jqXhr: JQueryXHR) => void = this.handleResponse;
                var options = {
                    url: "import/upload",
                    type: "POST",
                    dataType: "json",
                    success: successCallback
                };

问题是,在我的handleResponse方法中,我无法使用this.someParsingFunction调用我的“类”的其他函数。我最终做的是:

 handleResponse(data, statusText, jqXhr) {
            window.tempContext.parseInputData(data);
        }

在我看来有点hacky。在打字稿中有什么方法吗?提前谢谢!

1 个答案:

答案 0 :(得分:1)

你应该使用箭头功能:

myFunction() {
  $.ajax({
  // other options like url and stuff
  success: (a,b,c)=>{               // Arrow function
      this.someParsingFunction // Now this is lexically scoped. You don't need to create self
    }
  }
}