Angular4.x+Ionic3 踩坑之路之 Ionic3.x pop反向传值

1.Ionic3.x 页面正向传值

关于正向传值,上一篇文章里面有讲,具体可以看这里
https://segmentfault.com/a/11...

2.Ionic3.x 页面 pop反向传值,主要有两种方式

  • 1 .利用ES6提供 Promise 对象
  • 2 利用Ionic3.x提供Event对象,观察者模式(publish/subscribe)

1)利用ES6提供 Promise 对象

这边假设有两个页面A页面, B页面, 情景如下,A跳转B页面,在B页面返回A页面需要给A页面选回的值。

A页面代码

html内容

<button (tap)="goToBPage()">跳转到B页面</button>

ts 内容:

import BPage from ‘./BPage‘
export class APage{


constructor(public navCtrl: NavController, public navParams: NavParams) {
}
// 用于pop 回调的 block
callBackFromB  =(params) => {
     return new Promise((resolve, reject) => {
      if(params){
          resolve(‘成功取到B页面返回的参数‘);
          console.log(‘B页面参数为: ‘+ params);
      }else{
          reject(‘取回B页面数据失败’)
      }
   });
 }

 goToBPage (){
     this.navCtrl.push(BPage, {
        callback: this.callBackFromB
     })
 }

}

备注:Promise是由Es6提供的一个对象,new一个对象,有两个回调函数,一个是resove,一个是reject,resove是执行成功的回调,也就是我们调用
then执行的方法, reject是执行失败的回调,对应 是调用 catch方法
,现在es7新出一async和await,async是对Promise的进一步封装,详情可具体看官方文档!

B页面代码

ts 内容:

constructor(public navCtrl: NavController, public navParams: NavParams) {
// 获取对面A传过来的回调方法
   this.callback = this.navParams.get("callback")

}

 goBack(){
   let param = ‘我是要给A页面数据‘
   this.callback(param).then(()=>{
     // pop返回方法
      this.navCtrl.pop();
   });
  }
   

1)利用Ionic3.x提供Event对象,观察者模式(publish/subscribe)

event对象主要有3个方法 

  • 发布publish(topic, eventData)

    参数一是发布事件名字,第二个参数就是要发送数据,其实还可以传送第三,第四...等,都 是可以传送数据的

  • 订阅 subscribe(topic, handler)

    参数一是要接收的事件名称,第二个参数代表发布时传送的参数,如果发布有传第三个参数,同样的订阅的第三个参数就是对应的发布的第三个参数,以此类推....

  • 取消订阅 unsubscribe(topic, handler)

    参数一是要取消订阅的事件的名称,第二是一个回调函数,返回值:如果被移除成功,返回true

实现反向传值代码如下

A页面代码

ts代码

   goToBPage(){
     this.events.subscribe(‘bevents‘, (params) => {
            // 接收B页面发布的数据
            console.log(‘接收数据为: ‘+ paramsVar);

            // 取消订阅
            this.events.unsubscribe(‘bevents‘);
        })

        this.navCtrl.push(BPage);
   }

B页面代码

ts代码

goBack(){
  this.navCtrl.pop().then(() => {
    // 发布 bevents事件
    this.events.publish(‘bevents‘, ‘我是B页面数据‘);
  });
}

总结

以上主要介绍反向传值的2种方法,当然还有其它方法,如果你有更好 的方法,欢迎留言讨论

**愿你成为终身学习者**

原文地址:https://www.cnblogs.com/jlfw/p/11972138.html

时间: 2024-10-13 13:51:18

Angular4.x+Ionic3 踩坑之路之 Ionic3.x pop反向传值的相关文章

踩坑之路_&quot;var name = &#39; &#39;;&quot;_迷之BUG

情景介绍:最近写一个拖拽生成图表的工具,自己的思路每次mousedown的时候动态将this的name属性值赋值给全局中变量(自己手贱测试时直接将变量名命名为了'name',一大波bug还有30s到达战场.....),mouseup时更具当前的全局属性值判断生成的图表类型:就酱... 首先给大家贴个html布局,有图有真相,(虽然简单的要死)正常结果应该是:拖拽 '折线图' 右侧生成折线图,柱状图生成柱状图: 然后我帅气的用 var name = ''; 从此开启bug模式: js代码如下: 出

webpack踩坑之路 (2)——图片的路径与打包

webpack踩坑之路 (2)--图片的路径与打包 刚开始用webpack的同学很容易掉进图片打包这个坑里,比如打包出来的图片地址不对或者有的图片并不能打包进我们的目标文件夹里(bundle).下面我们就来分析下在webpack项目中图片的应用场景. 在实际生产中有以下几种图片的引用方式: 1. HTML文件中img标签的src属性引用或者内嵌样式引用 <img src="photo.jpg" /> <div style="background:url(ph

html2canvas的踩坑之路

html2canvas的踩坑之路 前言 早有耳闻这个html2canvas比较坑,但无奈于产品需求的压迫,必须实现html转图片的功能,自此走上了填坑之路,好在最后的效果还算令人满意,这才没有误了产品上线周期. html2canvas介绍 html2canvas的详细介绍可以点击这里查看,其实简单来说就是通过canvas将HTML生成的DOM节点绘制到画布上,再可以通过自己的需求转换成图片.所以官方文档也说了,最后生成的效果不是100%相同的,这一点大家要有心理准备,无论怎样,一点点小瑕疵是肯定

Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解

Ionic3.x 页面 pop反向传值,主要有两种方式: 1 .利用ES6提供 Promise 对象 2 利用Ionic3.x提供Event对象,观察者模式(publish/subscribe) 1)利用ES6提供 Promise 对象 这边假设有两个页面A页面, B页面, 情景如下,A跳转B页面,在B页面返回A页面需要给A页面选回的值. A页面代码 <button (tap)="goToBPage()">跳转到B页面</button> ts 内容: impor

Java踩坑之路

陆陆续续学Java也快一年多了,从开始的一窍不通到现在的初窥门径,我努力过,迷茫过,痛过,乐过,反思过,沉淀过.趁着新年,我希望能把这些东西记下来,就当是我一路走来的脚印. 一.初识网站应用 记得第一次接触Java,是写一个小网站,当时用servlet+tomcat做服务端,数据库是mysql.那时我对于网站应用的概念一片空白,之前接触的都是C++和MFC写桌面程序.我花了一周时间看完了<java servlet programming>这本书,然后我就开始写代码了.但是,真的当我写代码的时候

jQuery升级踩坑之路

1.使用了被废弃的jQuery.browser属性 jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support . 在更新的 2.0 版本中,将不再支持 IE 6/7/8. 以后,如果用户需要支持 IE 6/7/8,只能使用 jQuery 1.9. 如果要全面支持 IE,并混合使用 jQuery 1.9 和 2.0, 官方的解决方案是: <!--[if lt IE 9]> <script src='jquer

Angular4.0踩坑之路:探索子路由和懒加载

参考文章: Angular4路由快速入门  http://www.jianshu.com/p/e72c79c6968e Angular2文档学习的知识点摘要--Angular模块(NgModule)http://lib.csdn.net/article/angularjs/59697?knId=641 随着需求的增加,项目的功能也渐渐复杂起来.这个时候,需要将项目模块化,将组件.指令和管道打包成内聚的功能块,正好可以探索一下Angular4中的子路由以及模块的懒加载. 之前在开发的时候,已经在根

angular踩坑之路:初探webpack

之前费了一番力气安装好了angular开发环境,后面的几天都是在angular中文官网上看文档,照着英雄教程一步一步操作,熟悉了angular的一些基本特性,这部分没有遇到什么大问题,还比较顺利.这两天在看官方文档中的Webpack简介,想跟着文档做一遍,了解一下如何用Webpack打包angular项目,结果遇到了一些问题,因为是初学angular和Webpack的小白,这些问题一时难以解决,花费了不少时间,想在这里记录一下. 首先跟着文档将相关的文件都添加到项目中,目录是这样子的: 根据文档

opencv入门踩坑之路(一)

因为找了个实验室搬砖,所以我开始学opencv和pytorch了 嘿嘿嘿,感觉记录踩过的坑会很有意思嘻嘻嘻 首先是安装opencv,这个贼简单,我用的win10 直接命令行 pip install opencv-python,如果需要安装特定版本,可以pip install opencv-python==版本号,但是直接用默认安装最新版,它不香吗? 接下来测试一下是否成功 版本号出来就说明成功啦 接下来跑第一个demo 这个demo的作用是显示一张图片 from cv2 import cv2 a