私は 2 つの js ファイルを使用して、titanium アプリでそれらの間で変数を共有しています。メインの app.js には、テーブルの各行に関連付けられた 3 つの変数があります。コンポーネントが別のjsファイルにあるモーダルビューを開くために行をクリックしたときのイベントリスナーがあります。私の 3 つの変数は以下にあり、クリック イベントで 3 つの変数と 3 つのグローバル変数のアラートが表示されます。
var titleText = titleInRow.text;
var artistText=artistInRow.text;
Ti.App.myGlobalSongVar = titleText;
Ti.App.myGlobalArtistVar = artistText;
var rowNumber=e.row.name;
Ti.App.myGlobalRowNumber= rowNumber;
alert("titleText is: "+titleText+" and /n artistText is "+artistText+ " and /n row number is "+rowNumber +"/n TiAppmyGlobalSongVar is "+Ti.App.myGlobalSongVar+ " /n TiAppmyGlobalArtistVar is "+Ti.App.myGlobalArtistVar);
これらはすべて正しい結果を返しています。次に、2 番目の js ファイルには、次のアラートもあります。
alert("\n TiAppmyGlobalSongVar in modal is "+Ti.App.myGlobalSongVar+ " \n TiAppmyGlobalArtistVar in modal is "+Ti.App.myGlobalArtistVar + "TiAppmyGlobalRowNumber in modal is "+Ti.App.myGlobalRowNumber);
2 番目の js ファイルで 行を初めてクリックしたとき、2 番目のアラートの変数はすべて未定義です。2 回目にクリックすると、それらはすべて定義されていますが、間違っている場合があります。最初にクリックした未定義の行の変数の結果が得られるようです。この質問が明確であることを願っています。私は何を間違っていますか?
更新してください!!: 最後に、試した後:
Titanium.API.titleText = titleText;
Titanium.API.artistText = artistText;
と
Ti.App.Properties.setString('globalTitleText', titleText);
Ti.App.Properties.setString('globalArtistText', artistText);
と
Ti.App.myGlobalSongVar = titleText;
Ti.App.myGlobalArtistVar = artistText;
(2回目はすべて機能しましたが、最初は未定義でした)、機能した唯一のことは、テーブルイベントリスナーでこのイベントを発生させることでした:
Ti.App.fireEvent('myCustomEvent', {
myTitleText: titleText,
myArtistText: artistText
});
これを2番目のjsファイルに入れます:
var globalTitleText;
var globalArtistText;
Ti.App.addEventListener('myCustomEvent', function(event) {
globalTitleText=event.myTitleText;
globalTitleText=event.myTitleText;
//Ti.App.globalTitleText=event.myTitleText;
//Ti.App.globalArtistText=event.myArtistText;
alert('You sent me: '+event.myTitleText+" and "+event.myArtistText);
});
//However I can't use it here in my second js file (outside the custom event listener) as it is undefined.
問題の最後の部分を手伝ってくれる人はいますか? 他の方法がうまくいかなかった理由はまだわかりません。以前にさまざまなコンテキストでそれらを使用したことがあり、機能しましたが、この特定のインスタンスでは機能しませんでした!