доступ к переменным из функций в JavaScript? - PullRequest
0 голосов
/ 21 января 2011

как я могу получить доступ к переменной, которая была включена в функцию, но 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 или что-то.

1 Ответ

2 голосов
/ 21 января 2011

Вы пытаетесь получить переменную, которая еще не инициализирована. Поскольку вы присваиваете 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
    });
});

Или просто установите свойство username окна внутри обратного вызова:

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: некоторые методы работают асинхронно, и это вызывает странные проблемы. Так что если вы новичок, это может быть боль в заднице ..

В любом случае, удачи:)

...