Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.04.2013, 09:59
Новичок на форуме
Отправить личное сообщение для Matisumi Посмотреть профиль Найти все сообщения от Matisumi
 
Регистрация: 27.01.2013
Сообщений: 6

Из callback-функции не видны другие функции
Добрый день!

Вот такая проблема у меня - пишу класс, в одном из методов при получении данных от сервера вызывается функция-колбек. И вот из этой функции почему-то не видны все остальные функции класса, в консоли пишут, что <имя функции> не является функцией. В чем может быть проблема? Пробовал вызывать и через this. и просто по имени функции - бестолку..
Ответить с цитированием
  #2 (permalink)  
Старый 09.04.2013, 10:01
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

Код в студию, что-то мне подсказывает, что там присутствуют таймеры.
__________________
.

Последний раз редактировалось Skipp, 09.04.2013 в 10:08.
Ответить с цитированием
  #3 (permalink)  
Старый 09.04.2013, 10:05
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Этот класс сингл тон или у него могут быть экземпляры? Этот класс в глобальной области видимости?
Ответить с цитированием
  #4 (permalink)  
Старый 09.04.2013, 10:07
Новичок на форуме
Отправить личное сообщение для Matisumi Посмотреть профиль Найти все сообщения от Matisumi
 
Регистрация: 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);
};
Ответить с цитированием
  #5 (permalink)  
Старый 09.04.2013, 10:11
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Выведите в колбеке в консоле this и вы удивитесь увидев там не свой класс)

Обращайтесь к методу не через this
Ответить с цитированием
  #6 (permalink)  
Старый 09.04.2013, 10:11
Новичок на форуме
Отправить личное сообщение для Matisumi Посмотреть профиль Найти все сообщения от Matisumi
 
Регистрация: 27.01.2013
Сообщений: 6

Класс фактически синглтон, то есть за всю жизнь программы он создается всего один раз, однако средствами класса это никак не проверяется. Так что это, наверно, не синглтон в чистом виде.

Область видимости, на сколько я понимаю, глобальная
Ответить с цитированием
  #7 (permalink)  
Старый 09.04.2013, 10:13
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 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)});
};
__________________
.
Ответить с цитированием
  #8 (permalink)  
Старый 09.04.2013, 10:15
Новичок на форуме
Отправить личное сообщение для Matisumi Посмотреть профиль Найти все сообщения от Matisumi
 
Регистрация: 27.01.2013
Сообщений: 6

Сообщение от tsigel Посмотреть сообщение
Выведите в колбеке в консоле this и вы удивитесь увидев там не свой класс)

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

Всем спасибо, сделал через замыкание
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить значение переменной из callback функции? Хиросим AJAX и COMET 5 24.04.2012 09:32
arguments вызвавшей функции mister_maxim Общие вопросы Javascript 4 12.10.2010 16:21
JSON. Как в callback функции изменить свойство объекта? master_alf jQuery 10 22.04.2010 17:08