2012-04-12 6 views
0

Ich habe eine Sencha Touch-Anwendung, für die ich eine globale Variable festlegen möchte. EDIT: Weitere Klarstellung, ich muss auf diese globale Variable in allen Ansichten zugreifen können.Anwendungsvariable kann nicht in Sencha Touch Anwendung überschrieben werden

Ich setze die Variable auf die Anwendung auf ihren Standardwert und überschreibe sie dann während des Starts. Es wird jedoch nicht überschrieben.

Ext.application({ 
    name: 'hd', 
    isAuth: 'false', 
    launch: function() { 
     hd.app.isAuth = 'true'; 
     Ext.Msg.alert(hd.app.isAuth); //This always returns 'false' 
    } 
}); 

Ich bekomme keine Konsolenfehler und ich kann niemanden finden, der ein ähnliches Problem hat. Ich mache es offensichtlich falsch. Kann mir jemand den richtigen Weg zeigen, dies zu tun?

Antwort

1

Ich denke, app sollte hier nicht vorhanden sein. Dieser Code Snippet Warnungen true:

Ext.application({ 
    name: 'hd', 
    isAuth: 'false', 
    launch: function() { 
     hd.isAuth = 'true'; 
     Ext.Msg.alert(hd.isAuth); // will return true as I have tested 
    } 
}); 

Viel Glück.

Edited: Dies sollte hd.app.isAuth Ihren Wunschwert ändert

Ext.application({ 
    name: 'hd', 
    isAuth: 'false', 
    setIsAuth: function(value){ 
     this.isAuth = value; 
    }, 
    launch: function() { 
     hd.app.setIsAuth('true'); 
     Ext.Msg.alert(hd.app.isAuth); 
    } 
}); 
+0

Von Dokumentation lese ich, 'app' erforderlich ist, wenn die globalen Anwendungsvariablen zu setzen. Wenn ich zum Beispiel 'hd.app.isAuth' alarmiere, wird jeder Wert, den ich auf' isAuth' gesetzt habe, angezeigt. In einer aktuellen Ansicht alarmiert "hd.app.isAuth" diesen Wert immer noch. Die Warnung "hd.isAuth" gibt jedoch 'undefiniert' zurück. Ihr Beispiel ist nur eine lokale Variable setzen, nicht die globale überschreiben, die ich leider brauche. –

+0

Ich habe gerade ein wenig geändert, nur um eine Setter-Funktion zu erstellen und sie aufzurufen. Ich bin mir nicht sicher, aber ich denke, es gäbe ein Problem mit 'scope', wenn' hd.app.isAuth = 'true'' direkt verwendet wird –

+0

Das funktioniert in der lokalen Datei, aber die globale Variable wird nicht in andere Ansichten übertragen . Haben Sie eine Idee, warum das so sein sollte und was ich tun könnte, um den Wert für die gesamte Anwendung zu erhalten? –

0

Sie können unten tun

Ext.application({ 
name: 'hd', 
launch: function() { 
    this.isAuth = 'true'; 
    Ext.Msg.alert(hd.isAuth); //This returns 'true' 
    this.isAuth = 'false'; 
    Ext.Msg.alert(hd.isAuth);//This returns 'false'; 
}}); 
+0

Danke, das funktioniert innerhalb 'launch', aber ich muss in der Lage sein, eine Variable auf der Anwendungsebene zu setzen, die ich jederzeit manipulieren kann und deren Wert in allen Ansichten der Anwendung verfügbar ist. Leider tut dies das nicht. –

+0

Ja. Sie können diesen beliebigen Punkt mit dem Code hd.isAuth = true oder false setzen –

+0

Das ist leider falsch. –