Из callback-функции не видны другие функции
Добрый день!
Вот такая проблема у меня - пишу класс, в одном из методов при получении данных от сервера вызывается функция-колбек. И вот из этой функции почему-то не видны все остальные функции класса, в консоли пишут, что <имя функции> не является функцией. В чем может быть проблема? Пробовал вызывать и через this. и просто по имени функции - бестолку.. |
Код в студию, что-то мне подсказывает, что там присутствуют таймеры.
|
Этот класс сингл тон или у него могут быть экземпляры? Этот класс в глобальной области видимости?
|
this.companyTask.prototype.someFunction = function (param) {
//......
}
// тот самый колбек
this.companyTask.prototype.companyRedraw = function (text, xml) {
if (text != '') {
this.relOperations = dhx.DataDriver.json.toObject(text);
// Вот тут хочу вызвать какую-то функцию класса, например через this
this.someFunction ('foo bar');
}
};
// Отправляем запрос на сервер и ждем ответ
this.companyTask.prototype.getRelOperations = function () {
formData = '';
dhx.ajax().post(URL_BASE+"/mobile/company/index/getreloperations", formData, this.companyRedraw);
};
|
Выведите в колбеке в консоле this и вы удивитесь увидев там не свой класс)
Обращайтесь к методу не через this |
Класс фактически синглтон, то есть за всю жизнь программы он создается всего один раз, однако средствами класса это никак не проверяется. Так что это, наверно, не синглтон в чистом виде.
Область видимости, на сколько я понимаю, глобальная |
Matisumi,
Либо используйте bind, либо
this.companyTask.prototype.getRelOperations = function () {
var t = this;
formData = '';
dhx.ajax().post(URL_BASE+"/mobile/company/index/getreloperations", formData, function(data){t.companyRedraw(data)});
};
|
Цитата:
|
Всем спасибо, сделал через замыкание
|
| Часовой пояс GMT +3, время: 11:33. |