0

関数で初期化された変数にアクセスするにはどうすればよいですか?main.nameはnull値を与えてくれます。値は関数またはメインで初期化されていますが、フィードでは初期化されていません。これは私の例です、

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の初心者なので、削除するように言ってください。私はそれをグロブか何かに変えることができるかどうか疑問に思いました。

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
});

また、個人的な経験から:チタンはjsの「力を満たす」ための最良の方法ではありません:いくつかのメソッドは非同期で実行されており、奇妙な問題を引き起こします。だから、あなたが初心者なら、それはお尻の痛みかもしれません。

とにかく頑張ってください:)

于 2011-01-21T13:31:27.973 に答える