2013-07-22 2 views
2

Как сохранить ссылку на экземпляр при использовании обратного вызова setTimeout? Например:Как поддерживать ссылку на экземпляр при использовании обратного вызова setTimeout?

В моем ViewModel (используя Knockout)

var MyVM = function() { 
    this.myFunc = function() { 
    setTimeout("this.myCallback()", 2000); 
    }; 
    this.myCallback = function() { this.myObservable(true); } 
} 

Это терпит неудачу.

+0

Почему вам нужна ссылка? – ObieMD5

+0

Возможно, OP хочет «clearTimeout»? –

+0

@MatthewBlancarte зачем использовать 'this.myCallback = function() {this.myObservable (true); } 'вместо clearTimeout (MyVM) ;? – ObieMD5

ответ

3

Вы можете добавить частное поле:

var MyVM = function() { 
    var self = this; 
    this.myFunc = function() { 
     setTimeout(self.myCallback, 2000); 
    }; 
    this.myCallback = function() { self.myObservable(true); } 
} 
var vm = new MyVM(); 

Посмотрите РП Нимейера answer.

Надеюсь, это поможет.

Смежные вопросы