0

Ich habe ein Problem, Variablen in meiner iPhone Titan App zu übergeben. Unten ist meine AppTabGroup.js Datei. Es gibt einen Ereignis-Listener namens 'grantEntrance'. Wenn dies ausgelöst wird, müssen die Variablen event.name und event.email an alle neuen Registerkarten übergeben werden. Aus irgendeinem Grund funktioniert das nicht für mich. Ich bekomme unbestimmte Fehler. Ich denke, meine Frage ist, wie setze ich globale Variablen? Wie event.name, so dass es überall in der Anwendung angezeigt wird.Titanium - Variable an neues Fenster übergeben

function AppTabGroup() { 
//declare module dependencies 
var AppWindow = require('ui/AppWindow'); 
var OverviewWindow = require('ui/OverviewWindow'); 
var LeadWindow = require('ui/LeadWindow'); 
var CaseWindow = require('ui/CaseWindow'); 
var ResourcesWindow = require('ui/ResourcesWindow'); 

//create module instance 
var self = Ti.UI.createTabGroup(); 

//create app tabs 
var win1 = new OverviewWindow(L('Login')), 
    win2 = new CaseWindow(L('Cases')); 
    win3 = new LeadWindow(L('Leads')); 
    win4 = new ResourcesWindow(L('Resources')); 

var tab1 = Ti.UI.createTab({ 
    title: L('Login'), 
    icon: '/images/KS_nav_ui.png', 
    window: win1 
}); 
win1.containingTab = tab1; 

var tab2 = Ti.UI.createTab({ 
    title: L('Cases'), 
    icon: '/images/KS_nav_views.png', 
    window: win2 
}); 
win2.containingTab = tab2; 

var tab3 = Ti.UI.createTab({ 
    title: L('Leads'), 
    icon: '/images/KS_nav_views.png', 
    window: win3 
}); 
win3.containingTab = tab3; 

var tab4 = Ti.UI.createTab({ 
    title: L('Resources'), 
    icon: '/images/KS_nav_mashup.png', 
    window: win4 
}); 
win4.containingTab = tab4; 

//Load Initial Login tab 
self.addTab(tab1); 

//If Login is successful then the below even will fire and the other tabs will be loaded 
Ti.App.addEventListener('grantEntrance', function(event) 
{ 
win2.name  = event.name; 
win2.email  = event.email; 
self.addTab(tab2); 
self.addTab(tab3); 
self.addTab(tab4); 
self.removeTab(tab1); 

}); 



return self; 
}; 

module.exports = AppTabGroup; 

Unten ist mein CaseWindow.js Tab

function AppWindow(title) { 
var Main = Ti.UI.createWindow({ 
    title:title, 
    backgroundColor:'white' 
}); 

//Closed Case Button 
var ccButton = Titanium.UI.createButtonBar({ 
    labels:['Closed'], 
    backgroundColor:'#336699' 
}); 
Main.setLeftNavButton(ccButton); 

//New Case Button 
var ncButton = Titanium.UI.createButtonBar({ 
    labels:['New Case'], 
    backgroundColor:'#336699' 
}); 
Main.setRightNavButton(ncButton); 

ncButton.addEventListener('click', function() { 
    //containingTab attribute must be set by parent tab group on 
    //the window for this work 
    Main.containingTab.open(Ti.UI.createWindow({ 
     title: L('newCaseWindow'), 
     backgroundColor: 'white' 
    })); 
}); 

var msg = Titanium.UI.createLabel({ 
text:"Your Name is " + win.name, 
//text:"You have successfully logged in. Upon logging in we sent back your email address and your name. You can pass all kinds of data simply by creating objects on your window.\n\nYour email is:\n" + email + "\n\nyour name is:\n" + name, 
top:10, 
left:10, 
width:300, 
height:'auto' 
}); 
    Main.add(msg); 

    return Main; 
}; 

module.exports = AppWindow; 
+0

Was ist der Fehler und was event.name oder event.email ist? Wie informiert die Veranstaltung über E-Mail, Name? –

Antwort

2

Variablen in der app.js-Datei definiert sollte in allen anderen JS-Dateien zur Verfügung. Sie sollten jedoch einen Namespace für diese globalen Variablen erstellen, um sicherzustellen, dass sie keine anderen Variablen stören.

Hier ist ein Beispiel, wie Sie es tun könnten. In app.js:

var MyGlobalVars = { 
    email: null, 
    name: null 
}; 

Dann können Sie diese Werte von überall in Ihrer Anwendung und setzen durch Referenzierung:

MyGlobalVars.email = '[email protected]'; 
alert('My email is: '+MyGlobalVars.email); 

Allerdings werden diese Werte nicht in zwischen Ausführungen gespeichert werden von dir app. Wenn Sie Ihre App anhalten und erneut starten, gehen diese Variablen verloren, bis Sie sie erneut festlegen. Wenn Sie die Informationen speichern möchten, damit Sie nach dem Neustart der Anwendung wieder darauf zugreifen können, verwenden Sie möglicherweise die Ti.App.Properties, um sie zu speichern.

Es gibt Informationen über die verschiedenen Möglichkeiten, hier Informationen zu speichern:

https://wiki.appcelerator.org/display/guides/Working+with+Local+Data+Sources