我如何访问函数中已初始化的变量,但是main.name给了我一个空值,我知道该值是在函数中初始化的,或者是在main上,而不是在feed中!这是我的例子,
var main = Titanium.UI.createWindow();
var feed = Titanium.UI.createWindow({
title:'feeds',
url:'main_windows/feeds.js',
barImage:'bg_content.gif',
username:main.name //im trying too access this varibale from main.
});
Ti.App.addEventListener('grantEntrance',function(event)
{
main.title ='Welcome'+event.username;
main.url = 'main_windows/main.js';
main.name = event.username; // this is where the varibale is intialised
main.email = event.email;
main.barImage='bg_content.gif';
});
抱歉,如果这似乎是一个愚蠢的问题,但我是javascript的新手,所以告诉我删除它。我想知道你是否可以将它变成一个偶像或其他东西。
答案 0 :(得分:2)
您正在尝试获取尚未初始化的变量。由于您在事件的回调中分配main.name,因此只有在触发该事件后才会初始化它。我不确定你的应用程序的逻辑是什么,但我想你能够在这个回调中初始化窗口:
Ti.App.addEventListener('grantEntrance',function(event) {
main.title ='Welcome'+event.username;
main.url = 'main_windows/main.js';
main.name = event.username;
main.email = event.email;
main.barImage='bg_content.gif';
var feed = Titanium.UI.createWindow({
title:'feeds',
url:'main_windows/feeds.js',
barImage:'bg_content.gif',
username:main.name
});
});
或者,只需在回调中设置窗口的用户名属性:
var feed = Titanium.UI.createWindow({
title:'feeds',
url:'main_windows/feeds.js',
barImage:'bg_content.gif',
});
Ti.App.addEventListener('grantEntrance',function(event) {
main.title ='Welcome'+event.username;
main.url = 'main_windows/main.js';
main.name = event.username;
main.email = event.email;
main.barImage='bg_content.gif';
feed.username = main.name
});
另外,从个人经验来看:Titanium并不是js“填补权力”的最佳方式:有些方法是异步运行的,它会导致奇怪的问题。所以,如果你是新手,那可能是一个痛苦的屁股..
无论如何祝你好运:))