2014-05-06 42 views
1

我需要在标签应用中获取当前窗口。Titanium:无法在标签应用中获取当前窗口

我试图与

变种赢= Ti.UI.currentTab.window();

var win = Ti.UI.currentWindow;

但在两种情况下都会得到Uncaught TypeError: Cannot call method 'window' of undefined错误。

+0

你应该还提到你正在使用哪种结构? commonJS还是合金还是传统? –

+0

嗨,我正在使用合金技术 –

回答

0

如果您使用TabGroup,则可以通过activeTab property访问当前窗口。这不是全局函数,所以你必须有在你的代码参照TabGroup对象:

var tabGroup = Ti.UI.createTabGroup({ tabs: createTabs() }); 
tabGroup.activeTab.window 
0

currentTabcurrentWindow距离时,你可以从一个Ti.UI.createWindow({ url: 'foo.js' })分拆多个JavaScript环境遗留下来的。我建议你不要使用它们。

当您需要从应用程序的一个部分与另一部分的UI进行通信时,有几种模式可供选择。

第一个选项:侦听并触发事件la Ti.App.addEventListener('foo', function(data){})Ti.App.fireEvent('foo', { })。这很好地分离了代码,因此您可以在不更改启动代码的情况下移动UI处理代码。

第二选项:通过模块公开UI对象。在你的控制器中,exports.win = $.win;

第三选项:设置一个全局对象:Alloy.Globals.win = $.win;

+0

谢谢。如果我使用Alloy,我应该在哪里设置全局对象。在index.js中?谢谢。 –

+0

您应该在可以访问您要公开的视图的控制器中进行设置。 –

0

确定,所以在合金框架,我们只需使用$符号来获得其在.xml文件中创建的所有控件...

因此,如果您设置的.xml文件的窗口标签的ID,那么你可以获取当前窗口下面的例子...

.xml文件

<Alloy> 
    <Window id="win"> 
    </Window> 
</Alloy> 

js文件

var win = $.win 

所以从上面的代码你可以得到你当前的窗口。

希望你得到它。

相关问题