【ionic】タブの中に入れ子でタブをいれる方法メモ - ion-tabs
はじめに
今回やりたかったのはこんな画面。
イマイチできるのか不安だったけど無事できた。
ionicは海外の情報が多くて「ionic tabs inside tabs」とか「ionic tab nested」ってみんな検索してるみたい。
イメージはこんなかんじ
アプリ特有?かわからないけど、タブごとにナビゲーションをつくってタブごとに遷移していくようなイメージ。
実装
app.js
angular.module('ionicApp', ['ionic']) .config(function($stateProvider, $urlRouterProvider) { $stateProvider // ベースとなるタブ .state('tabs', { url: "/tab", abstract: true, templateUrl: "templates/tabs.html" }) // ホーム .state('tabs.home', { url: "/home", views: { 'home-tab': { templateUrl: "templates/home.html" } } }) // ニュースタブの中のタブ .state('tabs.news', { url: "/news", abstract: true, views: { 'news-tab': { templateUrl: "templates/news.html" } } }) // 新着ニュース一覧 .state('tabs.news.new', { url: "/new", views: { 'news-page': { templateUrl: "templates/news-new.html" } } }) // お気に入りニュース一覧 .state('tabs.news.favorite', { url: "/favorite", views: { 'favorite-page': { templateUrl: "templates/news-favorite.html" } } }) // 新着ニュース詳細 .state('tabs.news.new-detail', { url: "/new-detail", views: { 'news-page': { templateUrl: "templates/news-detail.html" } } }) // お気に入りニュース詳細 .state('tabs.news.favorite-detail', { url: "/favorite-detail", views: { 'favorite-page': { templateUrl: "templates/news-detail.html" } } }) ; $urlRouterProvider.otherwise("/tab/home"); });
templates/tabs.html
<ion-tabs class="tabs-icon-top tabs-positive"> <ion-tab title="ホーム" icon="ion-home" href="#/tab/home"> <ion-nav-view name="home-tab"></ion-nav-view> </ion-tab> <ion-tab title="ニュース" icon="ion-document" href="#/tab/news/new"> <ion-nav-view name="news-tab"></ion-nav-view> </ion-tab> </ion-tabs>
templates/home.html
<ion-view title="ホーム"> <ion-content class="padding"> <p>ホーム</p> </ion-content> </ion-view>
templates/news.html
<ion-view title="ニュース"> <ion-tabs class="tabs-icon-top tabs-positive tabs-top"> <ion-tab title="新着" href="#/tab/news/new" icon="ion-ios-clock-outline"> <ion-nav-view name="news-page"></ion-nav-view> </ion-tab> <ion-tab title="お気に入り" href="#/tab/news/favorite" icon="ion-bookmark"> <ion-nav-view name="favorite-page"></ion-nav-view> </ion-tab> </ion-tabs> </ion-view>
templates/news-new.html
<ion-view title="新着ニュース一覧"> <ion-content class="padding has-tabs-top"> <p>新着ニュース一覧</p> <a href="#/tab/news/new-detail">詳細へ</a> </ion-content> </ion-view>
templates/news-favorite.html
<ion-view title="お気に入りニュース一覧"> <ion-content class="padding has-tabs-top"> <p>お気に入りニュース一覧</p> <a href="#/tab/news/favorite-detail">詳細へ</a> </ion-content> </ion-view>
templates/news-detail.html
<ion-view title="ニュース詳細"> <ion-content class="padding has-tabs-top"> <p>ニュース詳細</p> </ion-content> </ion-view>
ずらずら書いたけど以上です。