|
|

09.04.2013, 09:59
|
|
Новичок на форуме
|
|
Регистрация: 27.01.2013
Сообщений: 6
|
|
|
Из callback-функции не видны другие функции
Добрый день!
Вот такая проблема у меня - пишу класс, в одном из методов при получении данных от сервера вызывается функция-колбек. И вот из этой функции почему-то не видны все остальные функции класса, в консоли пишут, что <имя функции> не является функцией. В чем может быть проблема? Пробовал вызывать и через this. и просто по имени функции - бестолку..
|
|

09.04.2013, 10:01
|
 |
.
|
|
Регистрация: 30.03.2010
Сообщений: 1,813
|
|
|
Код в студию, что-то мне подсказывает, что там присутствуют таймеры.
__________________
.
Последний раз редактировалось Skipp, 09.04.2013 в 10:08.
|
|

09.04.2013, 10:05
|
|
Профессор
|
|
Регистрация: 12.12.2012
Сообщений: 1,398
|
|
|
Этот класс сингл тон или у него могут быть экземпляры? Этот класс в глобальной области видимости?
|
|

09.04.2013, 10:07
|
|
Новичок на форуме
|
|
Регистрация: 27.01.2013
Сообщений: 6
|
|
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);
};
|
|

09.04.2013, 10:11
|
|
Профессор
|
|
Регистрация: 12.12.2012
Сообщений: 1,398
|
|
|
Выведите в колбеке в консоле this и вы удивитесь увидев там не свой класс)
Обращайтесь к методу не через this
|
|

09.04.2013, 10:11
|
|
Новичок на форуме
|
|
Регистрация: 27.01.2013
Сообщений: 6
|
|
|
Класс фактически синглтон, то есть за всю жизнь программы он создается всего один раз, однако средствами класса это никак не проверяется. Так что это, наверно, не синглтон в чистом виде.
Область видимости, на сколько я понимаю, глобальная
|
|

09.04.2013, 10:13
|
 |
.
|
|
Регистрация: 30.03.2010
Сообщений: 1,813
|
|
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)});
};
__________________
.
|
|

09.04.2013, 10:15
|
|
Новичок на форуме
|
|
Регистрация: 27.01.2013
Сообщений: 6
|
|
Сообщение от tsigel
|
Выведите в колбеке в консоле this и вы удивитесь увидев там не свой класс)
Обращайтесь к методу не через this
|
А если не через this, пишут что is not defined.
|
|

09.04.2013, 10:29
|
|
Новичок на форуме
|
|
Регистрация: 27.01.2013
Сообщений: 6
|
|
|
Всем спасибо, сделал через замыкание
|
|
|
|