我正在使用两个 js 文件并在钛应用程序中在它们之间共享变量。在我的主 app.js 中,我有 3 个与表中每一行关联的变量。我有一个事件侦听器,用于单击一行打开模态视图,该视图的组件位于单独的 js 文件中。我的三个变量如下,在单击事件中我收到了 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);
这些都返回了正确的结果。然后在我的第二个 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);
在第二个js文件中,我第一次单击一行时,我的第二个警报的变量全部未定义。我第二次单击时,它们都已定义,但有时是错误的。它似乎给出了我第一次单击的未定义行的变量结果。希望这个问题很清楚。我究竟做错了什么?
更新请阅读!!:最后,经过尝试:
Titanium.API.titleText = titleText;
Titanium.API.artistText = artistText;
and
Ti.App.Properties.setString('globalTitleText', titleText);
Ti.App.Properties.setString('globalArtistText', artistText);
and
Ti.App.myGlobalSongVar = titleText;
Ti.App.myGlobalArtistVar = artistText;
(第二次全部有效,但第一次未定义),
唯一有效的是在我的表事件监听器中触发此事件:
Ti.App.fireEvent('myCustomEvent', {
myTitleText: titleText,
myArtistText: artistText
});
并将其放在我的第二个 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.
谁能帮我解决最后一点问题吗?
我仍然不知道为什么其他方法不起作用。我之前在不同的环境中使用过它们,它们确实有效,但在这个特定的情况下却不起作用!