Проблемы с областями видимости при создании виджетов в jQuery - PullRequest
0 голосов
/ 26 марта 2012

Я пытаюсь вызвать cycle_pages внутри моего _create, но у меня возникают некоторые проблемы с областями видимости.Как только я вызываю setTimeout, я изменяю область видимости окна, а не мою анонимную функцию.Я перепробовал несколько вещей.Наиболее логичным представляется

function cycle_pages(){
    console.log("hello");
    change_page(1);
    setTimeout(function (self) {
        self.cycle_pages();
    }, 1000);
}

, но я также пробовал варианты

function cycle_pages(){
    console.log("hello");
    change_page(1);
    setTimeout('cycle_pages()', 1000);
}

Я пытался переместить функцию в глобальную область, но это вызывает change_page () длябыть вне области видимости.

Есть советы?Полная паста здесь http://jsfiddle.net/vn7Re/1/

Ответы [ 2 ]

1 голос
/ 26 марта 2012

Вы можете сделать это еще проще:

function cycle_pages(){
    console.log("hello");
    change_page(1);
    setTimeout(cycle_pages, 1000);
}

Вам не нужно создавать анонимную функцию в setTimeout.

0 голосов
/ 26 марта 2012

Функция setTimeout не содержит аргументов при вызове, поэтому вам, вероятно, нужно что-то более похожее на это:

function cycle_pages() {
    var self = this;
    change_page(1);
    setTimeout(function() {
        self.cycle_pages();
    }, 1000);
}
...