ionic3很好很强大,有人喷有人赞。不想参与其中,个人认为如果能很好的满足需求,好坏都是无所谓的,最合适的才是最好的。总结下最近使用ionic3的一些知识点,方便以后查询。多句嘴:会ionic3和只会ionic3是两个境界。

今天有妹子镇楼。今天的是……

 
2B小姐姐

页面想要“跳来跳去”的需要借助“工具”才能实现,就好像我们要攀岩需要有绳子一样,当前的“绳子”就是我们出场率很高的导航控制器NavController,首先需要在在页面顶端引入

import { NavController } from  ‘ionic-angular’

项目中的实际应用情况见下图:

 
导航控制器

只是引用组件的话,我们的导航控制器还不能使用,必须在构造器中初始化组件才能进行下一步。

//构造器中初始化组件
constructor(public navCtrl: NavController) {
//do some thing
// or
// don`t
}
 
构造器中初始化导航控制器

然后我们就可以用navCtrl的的push方法来跳转想要的组件页面。根据typescript的尿性,一般情况下我们需要这样使用:

this.navCtrl.push(XXXPage,{data});
 
跳转至LoginPage组件

很简单不是么?不过这只是开始,世界上唯一不变的就是变化,具体使用情境的逻辑或是客户的异想天开,总会给我们带来各种各样的奇葩体验。后面就是进阶装B阶段,都闪开!

 
我要开始装了,都闪开

假设一种情景,我们的页面已经进入的足够深,例如:

列表A --> 列表A2 --> 列表A23--> 列表A235 --> .... --> 内容

ionic3的默认方法只是返回上一级,如果我们想从内容返回至列表A,必须很麻烦的从内容逐级点返回按钮来返回上一级直至列表A,有多少层就要点击多少次,要是路径足够深估计会点到内伤吐血,这样的设计会大幅度降低用户体验。有没有什么方法可以从内容直接返回至列表A呢?

回答是肯定的,万物皆有道。万物皆有法。道法文档,才能一切皆有可能。方法popToRoot就是这样一个方便的神器,它可以直接让我们返回至导航的根位置,而不管它距离根有多远。关于这货的使用方法我摘抄自ionic3官方文档NavController部分

popToRoot(opts)

Navigate back to the root of the stack, no matter how far back that is. <<注意这句话

Param Type Details
opts object Nav options to go with this transition.

Returns a promise which is resolved when the transition has completed.

opts决定了在跳转时候的过渡效果,在完成功能最高权重思想的指引下下,这个参数我们可以无视。popToRoot方法在具体项目中的运用:

 
返回导航的根

哈哈!这下我们再也不怕“深”了。有此利器,再深我们也能自信满满的进去闯一闯。(气氛怎么有点怪怪的?)

 

完了么?没有!!具体使用情境是千变万化的,从来没有固定套路。popToRoot很强大,但是有一种情况绝对会让它无能为力。

 

例如,我们有三个tabs,在tabs3下面的的深层路径组件使用popToRoot只能让我们直接返回到tabs3的页面。就像下图所示。

 
返回root的根

这样的原因是因为我们在tab.html中已经设置了每个root。所以我们的popToRoot只能让我们返回至各自的root.

 
设置root

我们会经常遇见这种情况,就是我们需要从tabs3下面的深层次组件需要跳转到tabs1的根。这个需求是popToRoot无法满足的。

例如在项目中我的tabs3是设置选项,如果不是登录状态的话有些设置是不能操作的,这个时候需要提示用户登录,在提示界面如果用户不点击登录而是点击返回。在返回事件中使用popToRoot只会让我们返回tabs3页面,这恰恰不是我们需要的,我们需要的是用户直接返回至tabs1的首页。看来还要想另外的办法。

 
跳转不同的根

万事不决找文档。其实目前问题已经转向了,并不是导航NavController的功能范畴了,tabs的加入让问题开始变的扑朔迷离,看来我们需要从tabs相关文档开始查阅。

功夫不负有心人,在ionic3官方文档tabs部分中我们找到了一下的这句话:

You can also switch tabs from a child component by calling select() on the parent view using the NavController instance. For example, assuming you have a TabsPage component, you could call the following from any of the child components to switch to TabsRoot3:

switchTabs() {
this.navCtrl.parent.select(2);
}

select方法的参数是tabs的index值,从零开始计算。

这个方法可以让我们从一个组件中直接跳转到不同的tabs根位置。例如我的项目中是这样用的:

 
跨根跳转

刚接触ionic肯定会有错误,欢迎指正,不欢迎吐槽~

 
报告完毕

ionic3跳转页面的方法的更多相关文章

  1. ASP.NET弹出提示点击确定之后再跳转页面的方法

    //ASP.NET弹出提示点击确定之后再跳转页面的方法 //弹出了提示并且通过location.href转到了DeskTop.aspx页面 Response.Write("<scrip ...

  2. Spring MVC 跳转页面的方法

    转一个Spring MVC 跳转页面的方法,楼主总结的很全面,留着备用. https://blog.csdn.net/c_royi/article/details/78528758

  3. js跳转页面的方法

    js跳转页面的几种方法 第一种:(跳转到b.html) <script language="javascript" type="text/javascript&qu ...

  4. Spring Security 使用Ajax登陆无法跳转页面解决方法

    使用Security的朋友都知道,使用Security后,不再需要我们自己过多的(还需要写少量代码)写登陆的逻辑,只需要自己在html的登陆表单上面定义好输入框name为:username和passw ...

  5. asp.net跳转页面的三种方法比较(转)

    2006-10-20 14:32 [小 大] 来源: 博客园 评论: 0分享至: 百度权重查询 词库网 网站监控 服务器监控 SEO监控 手机游戏 iPhone游戏 今天老师讲了三种跳转页面的方法,现 ...

  6. asp.net跳转页面的三种方法比较

    目前,对于学习asp.net的很多朋友来讲,实现跳转页面的方法还不是很了解.本文将为朋友们介绍利用asp.net跳转页面的三种方法,并对其之间的形式进行比较,希望能够对朋友们有所帮助. ASP.NET ...

  7. ASP.NET页面跳转的三大方法详解

    ASP.NET页面跳转有什么方法呢?,现在给大家介绍三种方法,他们的区别是什么呢?让我们开始吧: ASP.NET页面跳转1.response.redirect 这个跳转页面的方法跳转的速度不快,因为它 ...

  8. asp.net(c#)网页跳转七种方法小结

    在asp.net下,经常需要页面的跳转,下面是具体的几种方法.跳转页面是大部编辑语言中都会有的,正面我们来分别介绍一下关于.net中response.redirect sever.execute se ...

  9. 详细介绍ASP.NET页面重定向方法

    ASP.NET中页面重定向的使用的很频繁,实现方法也有不同,自己也试过几种,现在总结一下. 一.Transfer Execute Redirect重定向方法介绍 1.Server.Transfer方法 ...

随机推荐

  1. 【GISER&&规划】我这二三年

    从从参加工作到现在,已经接近三年了.在这不长不短的时间里,我的职业规划犹如正余弦函数一样变化,一直游离在前端和后端之间. 第一年入职,被安排维护和拓展一套基于JAVA实现的地图瓦片生产工艺程序,不算复 ...

  2. 移动端H5支付(微信和支付宝)

    我们直接进入主题吧,先说功能: 1.用户通过我们的页面输入充值帐号和金额调起支付(微信或者支付宝),支付成功返回获取支付结果. 2.微信支付成功后重定向到指定页面(没有设置重定向地址的话,默认返回调起 ...

  3. Cordova+vue 混合app开发(一)创建Cordova项目

    简介: Cordova包装你的HTML/JavaScript app到原生app容器中,可以让你访问每个平台设备的功能.这些功能通过统一的JavaScript API提供,让你轻松的编写一组代码运行在 ...

  4. Mysql 常用函数(9)- reverse 函数

    Mysql常用函数的汇总,可看下面系列文章 https://www.cnblogs.com/poloyy/category/1765164.html reverse 的作用 将字符串反转,即顺序取反 ...

  5. pytest——pycharm中右击运行(run)没有问题,在terminal中运行pytest报错:E ModuleNotFoundError: No module named

    参考了这个解决办法:https://blog.csdn.net/qq_36829091/article/details/82180866 我的是Windows,linux的和Windows的解决办法有 ...

  6. kafka消费者重试逻辑的实现

    背景 在kafka的消费者中,如果消费某条消息出错,会导致该条消息不会被ack,该消息会被不断的重试,阻塞该分区的其他消息的消费,因此,为了保证消息队列不被阻塞,在出现异常的情况下,我们一般还是会ac ...

  7. POJ1948 Triangular Pastures

    POJ1948 Triangular Pastures #include <iostream> #include <cmath> using namespace std; ; ...

  8. System.Web.mail ----虚拟发件人发送邮件

     转载别人的 使用SMTP发送邮件   说到邮件发送,先提一下SMTP. SMTP的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议.它是一组用于从源地址到目的 ...

  9. .Net基础之1——学前入门

    1..Net平台 2.C#编程语言 3..Net都能做什么 Winform桌面应用程序.Internet应用程序——ASP.Net(京东.淘宝.携程网)(主推). WP8手机开发.Unity 3D游戏 ...

  10. Java数组声明创建和使用以及多维数组、Arrays类、稀疏数组

    目录 数组概述 数组声明创建 内存分析 java内存分析 堆 栈 方法区 三种初始化 静态初始化 动态初始化 数组的默认初始化 数组的四个基本特点 数组边界 小结: 数组使用 数组基础使用 For E ...