偉大的問題。有兩種不同的方法:
- 就像在第二個例子中所做的那樣,使用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,只是因爲我有幾個控制器加載某些頁面,它會使它更清潔。 –