Titanium - Passing Variable to new window

笑着哭i 提交于 2019-12-13 02:50:57

问题


I am having a problem passing variables in my iphone titanium App. Below is my AppTabGroup.js file. There is an event listener called 'grantEntrance'. When this is fired I need the variables event.name and event.email passed to all the new tabs. For some reason this is not working for me. I end up getting undefined errors. I think my question is how do I set global variables? Like event.name so it shows up anywhere in the application.

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;

Below is my 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;

回答1:


Variables defined in the app.js file should be available in all other JS files. You should create a namespace for these global variables however, to make sure that they don't interfere with any other variables.

Here's an example of how you might do it. In app.js:

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

Then you can get and set these values from anywhere in your application by referencing:

MyGlobalVars.email = 'me@gmail.com';
alert('My email is: '+MyGlobalVars.email);

However, these values won't be stored in between executions of you app. If you stop your app, and start it again, those variables will be lost until you set them again. If you are looking to store the information so that you can access them again after application restart, perhaps use the Ti.App.Properties to store them.

There is information on the different ways to store information here:

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



来源:https://stackoverflow.com/questions/10098442/titanium-passing-variable-to-new-window

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!