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 事件属性绑定带参数的函数
Mar 13 Javascript
判断脚本加载是否完成的方法
May 26 Javascript
利用WebBrowser彻底解决Web打印问题(包括后台打印)
Jun 22 Javascript
选择器中含有空格在使用示例及注意事项
Jul 31 Javascript
javaScript面向对象继承方法经典实现
Aug 20 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
Nov 26 Javascript
JS打印组合功能
Aug 04 Javascript
详解Javascript中的原型OOP
Oct 12 Javascript
简单实现jQuery弹幕效果
May 06 jQuery
详解Vuejs2.0 如何利用proxyTable实现跨域请求
Aug 03 Javascript
React.js绑定this的5种方法(小结)
Jun 05 Javascript
jstree中的checkbox默认选中和隐藏示例代码
Dec 29 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边学边教》(04.编写简易的通讯录――视频教程1)
2006/12/13 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
2019/02/15 PHP
mac pecl 安装php7.1扩展教程
2019/10/17 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
javascript encodeURI和encodeURIComponent的比较
2010/04/03 Javascript
Javascript中获取出错代码所在文件及行数的代码
2010/09/23 Javascript
在HTML代码中使用JavaScript代码的例子
2014/10/16 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
jQuery替换textarea中换行的方法
2015/06/10 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
2015/06/25 Javascript
JavaScript实现简单的日历效果
2016/09/25 Javascript
微信js-sdk界面操作接口用法示例
2016/10/12 Javascript
微信小程序  checkbox组件详解及简单实例
2017/01/10 Javascript
NodeJs实现简易WEB上传下载服务器
2019/08/10 NodeJs
javascript实现动态时钟的启动和停止
2020/07/29 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
python抓取网页图片示例(python爬虫)
2014/04/27 Python
Python中使用装饰器时需要注意的一些问题
2015/05/11 Python
python中利用await关键字如何等待Future对象完成详解
2017/09/07 Python
获取Django项目的全部url方法详解
2017/10/26 Python
Python OpenCV获取视频的方法
2018/02/28 Python
python tools实现视频的每一帧提取并保存
2020/03/20 Python
对Python中一维向量和一维向量转置相乘的方法详解
2019/08/26 Python
浅谈django url请求与数据库连接池的共享问题
2019/08/29 Python
基于Python检测动态物体颜色过程解析
2019/12/04 Python
python统计字符的个数代码实例
2020/02/07 Python
python使用openpyxl操作excel的方法步骤
2020/05/28 Python
CSS3实现鼠标悬停显示扩展内容
2016/08/24 HTML / CSS
面试后的感谢信范文
2014/02/01 职场文书
党员四风剖析材料
2014/08/27 职场文书
关于军训的感想
2015/08/07 职场文书
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript
通过Python把学姐照片做成拼图游戏
2022/02/15 Python
MySQL创建管理LIST分区
2022/04/13 MySQL
Python线程池与GIL全局锁实现抽奖小案例
2022/04/13 Python
bose降噪耳机音能消除人声吗
2022/04/19 数码科技