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


Posted in Javascript onMarch 13, 2018

1.Ionic3.x 页面正向传值

关于正向传值,上一篇文章里面有讲,具体可以看这里:https://3water.com/article/136302.htm

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个方法

1.发布publish(topic, eventData)

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

2.订阅 subscribe(topic, handler)

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

3.取消订阅 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种方法,当然还有其它方法,如果你有更好 的方法,欢迎留言讨论,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
一个JavaScript函数把URL参数解析成Json对象
Sep 24 Javascript
jQuery中animate()方法用法实例
Dec 24 Javascript
javascript实现表格增删改操作实例详解
May 15 Javascript
javascript实现禁止鼠标滚轮事件
Jul 24 Javascript
JavaScript希尔排序、快速排序、归并排序算法
May 08 Javascript
基于JavaScript实现数码时钟效果
Mar 30 Javascript
JavaScript中使用参数个数实现重载功能
Sep 01 Javascript
使用electron将vue-cli项目打包成exe的方法
Sep 29 Javascript
vue动态绑定class选中当前列表变色的方法示例
Dec 19 Javascript
JavaScript动态添加数据到表单并提交的几种方式
Jun 26 Javascript
ES6基础之数组和对象的拓展实例详解
Aug 22 Javascript
基于vue+element实现全局loading过程详解
Jul 10 Javascript
vue加载自定义的js文件方法
Mar 13 #Javascript
vue轮播图插件vue-concise-slider的使用
Mar 13 #Javascript
vue页面离开后执行函数的实例
Mar 13 #Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
Mar 13 #Javascript
解决vue页面刷新或者后退参数丢失的问题
Mar 13 #Javascript
解决vue单页使用keep-alive页面返回不刷新的问题
Mar 13 #Javascript
解决vue 路由变化页面数据不刷新的问题
Mar 13 #Javascript
You might like
PHP编写学校网站上新生注册登陆程序的实例分享
2016/03/21 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
js获取图片大小的函数代码
2011/09/20 Javascript
jquery监听div内容的变化具体实现思路
2013/11/04 Javascript
JavaScript中的函数嵌套使用
2015/06/04 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
2015/10/09 Javascript
深入分析jQuery的ready函数是如何工作的(工作原理)
2015/12/17 Javascript
Javascript的表单与验证-非空验证
2016/03/18 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
2016/05/27 Javascript
JS简单实现移动端日历功能示例
2016/12/28 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
2017/01/17 Javascript
解决vue中post方式提交数据后台无法接收的问题
2018/08/11 Javascript
详解微信小程序中组件通讯
2018/10/30 Javascript
vuex如何重置所有state(可定制)
2019/01/17 Javascript
详解django模板与vue.js冲突问题
2019/07/07 Javascript
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
python中字典dict常用操作方法实例总结
2015/04/04 Python
python通过openpyxl生成Excel文件的方法
2015/05/12 Python
python操作redis的方法
2015/07/07 Python
深入解析Python编程中JSON模块的使用
2015/10/15 Python
python list删除元素时要注意的坑点分享
2018/04/18 Python
PyQt实现界面翻转切换效果
2018/04/20 Python
Python实现字符串的逆序 C++字符串逆序算法
2020/05/28 Python
python中使用psutil查看内存占用的情况
2018/06/11 Python
Python2和Python3.6环境解决共存问题
2018/11/09 Python
python hashlib加密实现代码
2019/10/17 Python
Python函数的默认参数设计示例详解
2019/12/01 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
加拿大国民体育购物网站:National Sports
2018/11/04 全球购物
线程同步的方法
2016/11/23 面试题
银行自荐信范文
2013/10/07 职场文书
高三体育教学反思
2014/01/29 职场文书
2014年卫生工作总结
2014/11/27 职场文书
2015年新学期寄语
2015/02/26 职场文书
分享python函数常见关键字
2022/04/26 Python
使用ICOM IC-R9500接收机同时测评十台收音机中波接收性能
2022/05/10 无线电