Skip to content

MaxBalance/ionic-hideTabs

Repository files navigation

ionic-hideTabs

在ionic项目中,如果构建的是一个tabs项目,那会存在需要在进入下级页面时,隐藏掉底部或者顶部tabs的需求。本文介绍两种方式去实现,一种为通过css控制,另一种为通过设置路由实现。

###一、通过CSS隐藏tabs 这种方式主要是通过一个css-->tabs-item-hide来实现,这个css是ionic.css中自带的一个简单的样式。

1.设置tabs标签

<ion-tabs class="tabs-icon-top tabs-color-active-positive {{hideTabs}}" >

...

</ion-tabs>

这里的{{hideTabs}}是在稍后指令里赋值的。

2.指令

.directive('hideTabs',function($rootScope){
    return {
      restrict:'AE',
      link:function($scope){
        $rootScope.hideTabs = 'tabs-item-hide';
        $scope.$on('$destroy',function(){
          $rootScope.hideTabs = ' ';
        })
      }
    }
  })

这里表示在进入时,hideTabs为tabs-item-hide,tabs隐藏,当指令失效时则为空,就是tabs显示。

3.引用指令

在需要的首个页面中,引用指令

<ion-view view-title="d2" hide-tabs>

..

</ion-view>

之前有朋友反应,这样的方式在三级页面中返回到二级页面无效,原因是,如果是二级页面中添加了指令,在三级页面中再次添加指令,会造成上述情况。这样的情况只需要在二级页面中添加,不需要在三级页面中再次添加,因为,在二级页面中进入三级页面中,如果路由在一个views下的话,指令是不会destory的,所以只需要在首个页面中添加指令即可。 另外在二级页面中不能设置cache:false,不然三级页面也会失效,那如果需要设置的情况下,该如何实现隐藏tabs,那就用到下面的方法。

###二、设置路由实现隐藏tabs 在tabs的项目中,路由一般为:

 .state('tab', {
    url: '/tab',
    abstract: true,
    templateUrl: 'templates/tabs.html'
  })

.state('tab.account', {
    url: '/account',
    views: {
      'tab-account': {
        templateUrl: 'templates/tab-account.html',
        controller: 'AccountCtrl'
      }
    }
  })

在account中进入一个页面,比如d2页面,那么路由为:

.state('tab.d2', {
      url: '/d2',
      views: {
        'tab-account': {
          templateUrl: 'templates/account-detail2.html',
          controller: 'd2Con'
        }
      },
      cache:false
    })

这样进入d2页面,会自带返回按钮,同时tabs也存在,但是这时设置了cache:false,那进入三级页面上时隐藏会失效。这时就需要通过设置路由:

.state('d3',{
     url:'/d3',
     templateUrl:'templates/account-detail3.html',
     controller: 'd3Con'
   })

这样设置的话,d3页面就与account不在一个view中,也不继承tabs了,进入的话就是一个空页面,也不带任何返回按钮。实际就是两个没有关系路由间的跳转。

之前会带有tabs和返回,本质上也是路由的问题,都继承的tabs的路由页面会。这种方式一般不会存在什么特殊情况的问题,但是就是过渡的动画也不在了,如果需要,要自己去实现。


如果还有别的方式,希望大家能给予交流~谢谢

About

ionic demo about hide tabs

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published