从javascript中的函数访问变量?

时间:2011-01-21 13:05:39

标签: javascript titanium appcelerator

我如何访问函数中已初始化的变量,但是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的新手,所以告诉我删除它。我想知道你是否可以将它变成一个偶像或其他东西。

1 个答案:

答案 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“填补权力”的最佳方式:有些方法是异步运行的,它会导致奇怪的问题。所以,如果你是新手,那可能是一个痛苦的屁股..

无论如何祝你好运:))