jQuery で ajax ラッパーを作成していますが、スコープを正しく処理するのに問題があります。(コードは読みやすくするために短縮されています)
beforeSend イベントで使用したいユーティリティ クラスがありますが、現在未定義です。call() メソッドを使用してスコープを渡そうとしましたが、これは何も変更しませんでした。
どうすればこれを達成できますか?
class AjaxHelper{
private _utils: Utilities;
AjaxCall(options: AjaxHelperOptions)
{
this._utils = new Utilities();
var defaults: AjaxHelperOptions = { ... };
var settings: AjaxHelperOptions = $.extend({}, defaults, options);
var deferred = $.Deferred.call(this, function (d) {
d.done(settings.success);
d.fail(settings.error);
d.done(settings.complete);
var jqXHRSettings = $.extend.call(this, {}, settings, {
beforeSend: function (jqXHR, settings) {
______________________________________
this._utils.CallSomeUtilityFunction();
______________________________________
d.resolve;
}
.......................
$.ajax.call(this, jqXHRSettings);
});
var promise: JQueryPromise = deferred.promise();
promise.done = deferred.done;
promise.fail = deferred.fail;
return promise;
}
}