2012-01-03 17 views
7

To jest mój problem:Uzyskaj obiekt nadrzędny wewnątrz wywołania zwrotne jQuery

var greatapp = { 
    start : function(){ 
    $.AJAX({ 
     url : 'foo.com', 
     success : function(data){ 
     greatapp.say(data); 
     } 
    }) 
    }, 

    say : function(s){ 
    console.log(s); 
    } 
} 

Co mi się nie podoba w tym przypadku jest fakt, że powtarzam mój własny w funkcji success definiując nazwę obiektu, a nie tylko this co oczywiście nie zadziała, ponieważ jest w zewnętrznej zewnętrznej funkcji.

Jednorazowo w obiekcie JS pojawia się tylko jedna nazwa: greatapp?

+0

Zobacz http://stackoverflow.com/questions/183702/access-parent-parent-from-javascript-object – Ivan

Odpowiedz

10

Wspólne idiom JavaScript jest, aby zapisać wartość do zmiennej this jak me lub self i używać że w zwrotnego.

To będzie działać, ponieważ funkcja zwrotna ma dostęp do zmiennych zadeklarowanych w otaczającej zakres-innymi słowy zwrotna będzie tworzyć zamknięcie nad self

var greatapp = { 
    start : function(){ 
    var self = this; 
    $.AJAX({ 
     url : 'foo.com', 
     success : function(data){ 
     self.say(data); 
     } 
    }) 
    }, 

    say : function(s){ 
    console.log(s); 
    } 
} 
+0

Dzięki! Działa :) – Ryan

+0

@Ryan - Moja przyjemność - powodzenia –

Powiązane problemy