0

私のiPhoneのチタンアプリで変数を渡す際に問題が発生しました。以下は私のAppTabGroup.jsファイルです。 「grantEntrance」というイベントリスナーがあります。これが解消されたら、event.name変数とevent.email変数をすべて新しいタブに渡す必要があります。何らかの理由でこれは私のために働いていません。私は未定義のエラーを得ることに終わります。私は私の質問はグローバル変数をどのように設定するのだろうと思う? event.nameと同様に、アプリケーション内のどこにでも表示されます。以下はチタン - 新しいウィンドウに変数を渡す

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; 

app.jsファイルで定義されて

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

何が誤りであるとevent.nameまたはevent.emailは何ですか?イベントはどのように電子メール、名前について知っていますか? –

答えて

2

変数は、他のすべてのJSファイルに利用可能であるべき私のCaseWindow.jsタブです。ただし、これらのグローバル変数の名前空間を作成して、他の変数と干渉しないようにする必要があります。

ここでは、その操作の例を示します。 app.jsで:しかし、これらの値は実行の間で保存されることはありません

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

を:

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

次に、あなたが参照することにより、どこでも、あなたのアプリケーション内からこれらの値を取得および設定することができますあなたのアプリの。あなたがあなたのアプリを止めてもう一度起動すると、それらの変数はあなたが再び設定するまで失われます。アプリケーションの再起動後に再度アクセスできるように情報を保存する場合は、おそらくTi.App.Propertiesを使用して保存してください。

ここで情報を格納するためのさまざまな方法についての情報があります:

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

関連する問題