Из 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, время: 01:57. |