2016-06-09 4 views
1

Ich versuche, eine generische Funktion aufzurufen, aber wenn diese Funktion ausgeführt wird, bin ich in einem anderen Bereich (Fenster). Dieser Code wird den Fall darstellen:Sencha verlieren Kontext

Ext.application({ 
    name : 'Fiddle', 
    context: null, 

    function1 : function(){ 
     this.function2(this.function3); 
    }, 

    function2 : function(func){ 
     func(); 
    }, 

    function3 : function(){ 
     if(context == this){ 
      Ext.Msg.alert('Fiddle', 'Same context!'); 
     } 
     else { 
      Ext.Msg.alert('Fiddle', 'Different context!'); 
     } 
    }, 

    launch : function() { 
     context = this; 
     this.function1(); 
    } 
}); 

Ich versuche zu binden, aber es funktioniert nicht.

Danke!

Antwort

1

Sie bind verwenden können, versuchen function1 ändern, wie:

function1: function(){ 
    this.function2(this.function3.bind(this)); 
} 

(Auf diese Weise func in function2 mit Ihrem erwarteten this eine neue Funktion ist.)

+0

Vielen Dank !!! –