如何刷过不同的离子标签

Posted

技术标签:

【中文标题】如何刷过不同的离子标签【英文标题】:How to swipe through different ionic tabs 【发布时间】:2015-07-30 04:35:34 【问题描述】:

第一次在这里发帖,但非常感谢您对此的帮助或建议:

我目前正在使用 ionic 框架构建一个项目,在构建了一个功能版本之后,我决定能够在选项卡之间滑动以显示应用程序的各个部分。

我使用 ionic 提供的选项卡模板构建了应用程序,因此每个页面都通过 ion-nav-view 元素显示,并且是通过 app.js 文件中声明的状态更改调用的模板(见下文):

angular.module('starter', ['ionic', 'starter.controllers', 'starter.services'])

.run(function($ionicPlatform) 
  $ionicPlatform.ready(function() 
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
    // for form inputs)
    if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) 
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
    
    if (window.StatusBar) 
      // org.apache.cordova.statusbar required
      StatusBar.styleLightContent();
    
  );
)

.config(function($stateProvider, $urlRouterProvider) 

  // setup an abstract state for the tabs directive
    .state('tab', 
    url: "/tab",
    abstract: true,
    templateUrl: "templates/tabs.html"
  )

  // Each tab has its own nav history stack:

  .state('tab.dash', 
    url: '/dash',
    views: 
      'tab-dash': 
        templateUrl: 'templates/tab-dash.html',

      
    
  )

  .state('tab.notes', 
      url: '/notes',
      views: 
        'tab-notes': 
          templateUrl: 'templates/tab-notes.html',
          controller: 'noteController'
        
      
    )

  .state('tab.todos', 
    url: '/todos',
    views: 
      'tab-todos': 
        templateUrl: 'templates/tab-todos.html',
        controller: 'todoController'
      
    
  )

  .state('tab.doodles', 
    url: '/doodles',
    views: 
      'tab-doodles': 
        templateUrl: 'templates/tab-doodles.html',
      
    
  )

  // if none of the above states are matched, use this as the fallback
  $urlRouterProvider.otherwise('/tab/dash');

);

我想知道的是;有没有办法让用户左右滑动来切换不同的页面?

有可能吗?如果是这样,是否也应该在需要滚动的时候?

我希望这是足够的细节,如果不是,我很乐意提供尽可能多的信息。感谢收听!

【问题讨论】:

【参考方案1】:

是的,这是可能的。我玩弄了标签模板,得到了以下结果:

<ion-content on-swipe-right="goBack()" on-swipe-left="goForward()">

并且在每个控制器中你都需要相应的功能:

.controller('MyCtrl', function ($scope, $ionicTabsDelegate) 

    $scope.goForward = function () 
        var selected = $ionicTabsDelegate.selectedIndex();
        if (selected != -1) 
            $ionicTabsDelegate.select(selected + 1);
        
    

    $scope.goBack = function () 
        var selected = $ionicTabsDelegate.selectedIndex();
        if (selected != -1 && selected != 0) 
            $ionicTabsDelegate.select(selected - 1);
        
    
)

我不知道这是否是最佳实践并且非常健壮。就像我说的,我只是在阅读了docs 之后玩了一下。

我希望我能告诉你它是如何工作的。

【讨论】:

但是当你这样做时你不会得到slide 动画。 幻灯片动画是什么意思?可以举个例子吗? 这可行,但视图从一个视图跳转到另一个视图。没有动画,我所说的动画是指当您在 ionic 中拉侧菜单时获得的那种拉动动画。下一个视图从侧面拉出,并且在断点卡入视口之后......但是感谢这个工作 啊,我明白了……但这也应该是可能的。就像我说的,这只是一个概念证明。您可以进一步详细说明。我只是给你一个基本的想法:) 另一种解决方案是在标签之外使用 Ionic Slide Box。可以使用滑动框(具有内置动画)创建页面导航,并在页面底部添加标签作为视觉元素。单击每个选项卡将调用使用$ionicSlideBoxDelegate.slide() 转到正确幻灯片的函数。

以上是关于如何刷过不同的离子标签的主要内容,如果未能解决你的问题,请参考以下文章

离子可滚动标签

在离子切换中打开和关闭时如何调用不同的函数

离子框架:每个列表项的不同背景颜色

如何使用相同的 ionic html 来显示不同的图像?

在离子框架中使用复选框时如何从离子标签中删除空间

如何首先放置离子标签?