我有以下设置:在ApplicationTabGroup.js
我有一个标签组
var tabGroup = Ti.UI.createTabGroup();
有两个标签。
其中一个标签调用外部URL,这是代码
//Restaurant Window
var restaurant = Titanium.UI.createWindow({
tabBarHidden:true,
color: '#FFF',
url: 'restaurants.js',
navBarHidden:false,
statusBarStyle: Titanium.UI.iPhone.StatusBar.TRANSLUCENT_BLACK
});
var tab2 = Ti.UI.createTab({
title:"x",
color: '#FFF',
backgroundColor:'#00c0f3',
window: restaurant
});
我用像这样的
这样的EventListener打开该选项卡 tabGroup.setActiveTab(tab2).open();
问题是来自restaurant.js
我不知道如何返回第一个标签或任何其他标签,因为tabgroup
中的restaurant.js
未定义。
如何在ApplicationTabGroup.js
中定义标签组时,如何浏览在不同网址中调用的标签?
我正在使用 - iOS7 - SDK 3.1.3 GA
非常感谢任何正确方向的小贴士!
答案 0 :(得分:3)
由于这个原因,你真的不应该使用url
属性,因为它会创建一个完全不同的JS上下文,而是应该将您的选项卡窗口(restaurants.js)包装在CommonJS样式模块中。
但是,如果你不想制作这个模块,你应该只能将tabGroup作为窗口的属性添加如下:
var restaurant = Titanium.UI.createWindow({
tabBarHidden:true,
color: '#FFF',
url: 'restaurants.js',
navBarHidden:false,
statusBarStyle: Titanium.UI.iPhone.StatusBar.TRANSLUCENT_BLACK
});
restaurant.myTabGroup = tabGroup;
然后你可以在restaurants.js文件中导航到这样的不同标签:
// Set active tab to the third tab
Titanium.UI.currentWindow.myTabGroup.setActiveTab(3).open();
我强烈建议你去模块路径。
编辑 :这是尝试使用寄生继承模块化您的窗口。看看this guide for more detail.
function MyWindow(parentTabGroup) {
var restaurant = Titanium.UI.createWindow({
tabBarHidden:true,
color: '#FFF',
navBarHidden:false,
statusBarStyle: Titanium.UI.iPhone.StatusBar.TRANSLUCENT_BLACK
});
// Here is where you add all the controls and views you had put inside
// 'restaurant.js'.....
// Also, if you have an event listener you can call the tab group
button.addEventListener('click', function(e) {
parentTabGroup.setActiveTab(3);
});
return restaurant;
}
module.exports = MyWindow;
现在您可以创建窗口并将其添加到选项卡组,如下所示:
var MyWindow = require('MyWindow');
var mywin = new MyWindow(tabGroup);
var tab2 = Ti.UI.createTab({
title:"x",
color: '#FFF',
backgroundColor:'#00c0f3',
window: mywin
});