伟大的问题。有两种不同的方法:
- 就像在第二个例子中所做的那样,使用tabbar和手势检测器。温泉2.0有一个
slide
动画为tabbar,所以你只需要添加<ons-tabbar animation="slide" ... >
。温泉2.0仍然是alpha版本,但它将在未来几周内发布。这种方法的缺点是在滑动动作完成后滑动动画开始。
你基本上添加ons-tabbar
元件,然后配置手势检测器,如下所示:
ons.ready(function() {
// Create a GestureDetector instance over your tabbar
// The argument is the actual HTMLElement of tabbar, you can also do document.getElementById(...)
var gd = ons.GestureDetector(myTabbar._element[0]);
gd.on('swipe', function(event) {
var index = myTabbar.getActiveTabIndex();
if (event.gesture.direction === 'left') {
if (index < 3) {
myTabbar.setActiveTab(++index);
}
} else if (event.gesture.direction === 'right') {
if (index > 0) {
myTabbar.setActiveTab(--index);
}
}
})
});
在这里工作:https://jsfiddle.net/frankdiox/o25novtu/1/
- 结合
ons-tabbar
和ons-carousel
元件。此方法的缺点是ons-carousel-item
无法获取模板或分隔文件(请查看注释以查找其他解决方法)。
ons-tab
需要page
属性,你不能让它空白,而不在控制台中的错误,但我们可以用ons-tabbar
的风格,而不是实际的组件:http://onsen.io/reference/css.html#tab-bar
我们现在有一个全屏旋转木马结合起来就像一个你所提到的,并添加下一个CSS使页面内容尊重我们的TabBar所以它不会翻倒或背后:
ons-carousel[fullscreen] {
bottom: 44px;
}
下一步,我们每一个链接标签,其对应的C arousel item:
<div class="tab-bar" id="myTabbar">
<label class="tab-bar__item" onclick="carousel.setActiveCarouselItemIndex(0)">
...
</label>
<label class="tab-bar__item" onclick="carousel.setActiveCarouselItemIndex(1)">
...
</label>
<label class="tab-bar__item" onclick="carousel.setActiveCarouselItemIndex(2)">
...
</div>
依此类推。这会使我们点击一个标签时传送带自动改变。现在我们需要做相反的连接:当我们滑动旋转木马时更新选中的选项卡。使用TabBar基本上是一组单选按钮,所以我们只需要得到我们想要在转盘中的postchange
事件中的一个,并检查它:
ons.ready(function(){
carousel.on('postchange', function(event){
document.getElementById('myTabbar').children[event.activeIndex].children[0].checked = true;
});
});
您现在可以改变每carousel-item-index
的内容和插入ons-page
与任何你想要的。
在这里工作:http://codepen.io/frankdiox/pen/EVpNVg
我们可以添加一个功能在OnsenUI的未来版本,以使它更容易些。
希望它有帮助!
甜!非常感谢!有没有办法在每个ons-page/carousel项目中动态加载外部html文件? –
@MarkB不是直接的,但像往常一样有一个窍门。你可以在''里放一个 ons-navigator>'。然后把你的内容放在一个模板myPage.html中(我修改了Codepen的例子)。当然,这些都是解决方法,并不是最有效的方法。我正在考虑为Onsen 2.0实现与此相关的事情。顺便说一下,如果你认为它有效,请接受这个答案。 –
是的,我要去的主要效果是这个https://raw.githubusercontent.com/brentvatne/react-native-scrollable-tab-view/master/demo.gif 随着每个“页面/标签”从温泉分开HTML,只是因为我有几个控制器加载某些页面,它会使它更清洁。 –