Я портирую код javascript на машинописный текст, и я столкнулся с проблемой.Typcript + Jquery Ajax + this
У меня есть вызов Ajax, который проходит объект в качестве контекста, этот объект содержит некоторые функции обратного вызова и некоторую другую информацию, которые будут считываться успехом или ошибок обратных вызовов, которые указывают, где призывание успех должен быть перенаправлен:
function SomeAjaxService
{
var self = this;
self.CheckErrorType = function(...) {
// Do something
};
var SuccessProxyCallback = function(results) {
// Do some stuff with results, like send off some events
this.successCallback(results);
};
var FailureProxyCallback = function(...) {
// Do some stuff with errors, and fire some events
var someErrorType = self.CheckErrorType(...);
this.failureCallback(someErrorType);
};
self.SendRequest = function(requestArgs) {
var ajaxSettings = {
context: requestArgs,
// Assign a load of stuff
};
$.ajax(ajaxSettings);
};
}
Теперь, когда вы видите, что прокси-сервер отказа вызывает локальный метод, а также использование этого «контекстного объекта». Итак, как вы можете справиться с подобным сценарием с машинописным текстом?
Можете вы только что установить self = this
в конструкторе и продолжить то, что было раньше?
== EDIT ==
В соответствии с просьбой здесь класс представление выше, показывающий вопрос об этом необходимости быть 2 вещи из-за отсутствующей переменной самостоятельно.
class SomeAjaxService
{
public CheckErrorType(someArg1: any, someArg2: any) {
// Do some stuff with data
};
private SuccessProxyCallback(results: any) {
// Do some stuff with results, like send off some events
this.successCallback(results);
// Does the above *THIS* usage point to the context of the
// Ajax call or the actual instantiated class
};
private FailureProxyCallback(...) {
// Do some stuff with errors, and fire some events
var someErrorType = this.CheckErrorType(...);
// The above *THIS* call cannot be correct if the context has overwritten
// the scope of this, however I dont know if this is true, do I even need
// this.CheckErrorType to invoke a local method?
this.failureCallback(someErrorType);
// As mentioned above same issue here but the *THIS* should hopefully
// point to the context object on the ajax object not the local instance.
};
public SendRequest(requestArgs: any) {
var ajaxSettings : JqueryAjaxSettings = {
context: requestArgs,
// Assign a load of stuff
};
$.ajax(ajaxSettings);
};
}
Как я уже сказал выше, главный вопрос в том, что в способе мне нужно вызвать один из методов инстанций, а также вызвать метод объекта контекста из вызова Ajax. С необработанным javascript я бы получил self = this
, а затем я могу обойти , который будет переопределен, что необходимо для сохранения объекта состояния aynax async в области видимости.
машинописный сборник этого кода является именно сам этот код, так что вы действительно здесь вопрос JavaScript. Или вы пытаетесь преобразовать это в класс (если да, что у вас есть до сих пор)? –
Это оригинальный javascript, ну это издевавшийся набор javascript, чтобы показать проблему, которая у меня есть. Я буду обновлять с помощью классного типа машинописного текста, если это поможет, хотя я думал, что проблема будет очевидна без него. – Grofit
Это может помочь https://www.youtube.com/watch?v=tvocUcbCupA&hd=1 – basarat