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 相关文章推荐
NiftyCube——轻松实现圆角边框
Feb 20 Javascript
JS类的封装及实现代码
Dec 02 Javascript
jQuery提示插件alertify使用指南
Apr 21 Javascript
在AngularJS中如何使用谷歌地图把当前位置显示出来
Jan 25 Javascript
jQuery表单插件ajaxForm实例详解
Jan 17 Javascript
vuejs使用FormData实现ajax上传图片文件
Aug 08 Javascript
VUE Error: getaddrinfo ENOTFOUND localhost
May 03 Javascript
Element实现表格分页数据选择+全选所有完善批量操作
Jun 07 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
Jul 02 Javascript
Vue 3.0 前瞻Vue Function API新特性体验
Aug 12 Javascript
Vue实现跑马灯效果
May 25 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
Aug 17 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
法兰绒滤网冲泡
2021/03/03 冲泡冲煮
5.PHP的其他功能
2006/10/09 PHP
PHP新手上路(二)
2006/10/09 PHP
PHP中break及continue两个流程控制指令区别分析
2011/04/18 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
2020/06/24 PHP
为你的网站增加亮点的9款jQuery插件推荐
2011/05/03 Javascript
js日历功能对象
2012/01/12 Javascript
解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法
2012/11/14 Javascript
在表单提交前进行验证的几种方式整理
2013/07/31 Javascript
javascript event在FF和IE的兼容传参心得(绝对好用)
2014/07/10 Javascript
jQuery动态背景图片效果实现方法
2015/07/03 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
2015/10/09 Javascript
同步文本框内容JS代码实现
2016/08/04 Javascript
简单实现js无缝滚动效果
2017/02/05 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
2017/05/04 Javascript
angularJs 表格添加删除修改查询方法
2018/02/27 Javascript
JS数组实现分类统计实例代码
2018/09/30 Javascript
layui.use模块外部使用其内部定义的js封装函数方法
2019/09/16 Javascript
基于JavaScript实现控制下拉列表
2020/05/08 Javascript
[54:56]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第三局
2016/03/06 DOTA
在Python中使用Mako模版库的简单教程
2015/04/08 Python
Python的函数的一些高阶特性
2015/04/27 Python
python微元法计算函数曲线长度的方法
2018/11/08 Python
matplotlib实现区域颜色填充
2019/03/18 Python
django之静态文件 django 2.0 在网页中显示图片的例子
2019/07/28 Python
用sqlalchemy构建Django连接池的实例
2019/08/29 Python
浅谈pandas dataframe对除数是零的处理
2020/07/20 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
Python对excel的基本操作方法
2021/02/18 Python
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
2019/01/17 HTML / CSS
Under Armour瑞典官方网站:美国高端运动科技品牌
2018/11/21 全球购物
咖啡店自主创业商业计划书
2014/01/22 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
2015年党风廉政承诺书
2015/01/22 职场文书
水浒传读书笔记
2015/06/25 职场文书