0

我如何访问在函数中初始化的变量,但是 main.name 给了我一个空值,我知道该值是在函数中初始化的,或者在 main 上,但不在提要中!!这是我的例子,

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 的新手,所以告诉我删除它。我想知道你是否可以把它变成一个 gloab 什么的。

4

1 回答 1

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 的力量”的最佳方式:有些方法是异步运行的,它会导致奇怪的问题。因此,如果您是新手,那可能会很痛苦..

无论如何祝你好运:)

于 2011-01-21T13:31:27.973 回答