2011-09-13 8 views
2

こんにちは私はチタン製のスタジオを使用してAndroidアプリケーション開発を行っています。小さなアプリケーションを開発しました。問題は、xhr.onのload.Iで定義されている変数にアクセスできません。ロード機能で外部変数にアクセスする

xhr.onload = function() 
{ 
var json = this.responseText; 
var to_array = JSON.parse(json); 
var to_count = to_array.length; 
}; 

私は次のコードを使用することをwindow.Forにto_countにアクセスし、外部のonload関数をto_arrayし、別の子にそれを渡したい:

var feedWin = Titanium.UI.createWindow({ 
    url:'home/feed.js' 
});//alert(to_count); 
feedwin.to_array = to_array; 
feedwin.to_count = to_count; 

答えて

0

onloadfeedWinを初期化するのが最も良い方法です。

xhr.onload = function() 
{ 
    var json = this.responseText, 
     feedWin = Titanium.UI.createWindow({ 
      url:'home/feed.js' 
     });//alert(to_count); 

    feedWin.to_array = JSON.parse(json); 
    feedWinto_count = to_array.length; 
}; 

または

var feedWin = Titanium.UI.createWindow({ 
     url:'home/feed.js' 
    }); 

xhr.onload = function() 
{ 
    var json = this.responseText, 

    feedWin.to_array = JSON.parse(json); 
    feedWinto_count = to_array.length; 
}; 

私はチタンに慣れていないので、私は詳細を知らないが、それは私の最高の推測です:だから、次の二つのスニペットの一つが動作するはずです。

-1

私はチタンに精通していないですが、WRTに宣言の範囲は、私はこれがあなたのものだと思うそれらを機能の外で使用するために行うべきeed。

var to_array; 
var to_count; 


xhr.onload = function() 
{ 
var json = this.responseText; 
to_array = JSON.parse(json); 
to_count = to_array.length; 
}; 
+0

すばやくお礼をありがとうございますが、私には「未定義」というエラーが表示されます – nilkash

+1

これは、この呼び出しがfeedwin.to_array = to_arrayを呼び出すことを保証する必要があります。 feedwin.to_count = to_count;あなたのonloadが呼ばれた後に起こります。 JavascriptはCのような参照ベースではないため、ロード時にこれらを前に呼び出すとnull/undefined値が返されます。 –

1

XHRクライアントはデフォルトで非同期です。つまり、XHRが実行されている間はコードは実行され続けます。 XHRに依存するコードがある場合は、onload関数内からそのコードを呼び出すか、またはXHRをxhr.send()の3番目のパラメータとして「false」を追加して強制的に同期させる必要があります最初の選択肢が信頼性の高いものであることが判明しました。さらに、Titaniumが予期している/期待していることに沿ったものがあります。

関連する問題