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 相关文章推荐
JQuery CSS样式控制 学习笔记
Jul 23 Javascript
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
Sep 29 Javascript
复制网页内容,粘贴之后自动加上网址的实现方法(脚本之家特别整理)
Oct 16 Javascript
jQuery中trigger()与bind()用法分析
Dec 18 Javascript
利用JavaScript阻止表单提交的两种方法
Aug 11 Javascript
深入理解jQuery layui分页控件的使用
Aug 17 Javascript
基于Bootstrap漂亮简洁的CSS3价格表(附源码下载)
Feb 28 Javascript
jquery实现表单获取短信验证码代码
Mar 13 Javascript
详解Angular 开发环境搭建
Jun 22 Javascript
详解微信小程序设置底部导航栏目方法
Jun 29 Javascript
浅谈针对Vue相同路由不同参数的刷新问题
Sep 29 Javascript
微信小程序录音实现功能并上传(使用node解析接收)
Feb 26 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 方便水印和缩略图的图形类
2009/05/21 PHP
Blitz templates 最快的PHP模板引擎
2010/04/06 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
2014/11/25 PHP
php7新特性的理解和比较总结
2019/04/14 PHP
jquery与js函数冲突的两种解决方法
2013/09/09 Javascript
页面加载完后自动执行一个方法的js代码
2014/09/06 Javascript
js+canvas绘制五角星的方法
2016/01/28 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
2016/05/30 Javascript
bootstrap table配置参数例子
2017/01/05 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
2017/01/19 Javascript
原生js实现可拖动的登录框效果
2017/01/21 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
2017/06/08 Javascript
JavaScript反弹动画效果的实现代码
2017/07/13 Javascript
Angular 4.0学习教程之架构详解
2017/09/12 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
2018/01/13 Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
2020/09/08 Javascript
使用AutoJs实现微信抢红包的代码
2020/12/31 Javascript
[05:22]DOTA2 2015国际邀请赛中国区预选赛首日TOP10
2015/05/26 DOTA
python实现字典(dict)和字符串(string)的相互转换方法
2017/03/01 Python
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
详解Python在七牛云平台的应用(一)
2017/12/05 Python
Django接收post前端返回的json格式数据代码实现
2019/07/31 Python
对Django 转发和重定向的实例详解
2019/08/06 Python
python3图片文件批量重命名处理
2019/10/31 Python
Python 图片处理库exifread详解
2021/02/25 Python
英国足球店:UK Soccer Shop
2017/11/19 全球购物
荷兰游戏商店:Allyouplay
2019/03/16 全球购物
JAVA中的关键字有什么特点
2014/03/07 面试题
机电一体化自荐信
2013/12/10 职场文书
《两个铁球同时着地》教学反思
2014/02/13 职场文书
领导班子四风表现材料
2014/08/23 职场文书
2014年保洁工作总结
2014/11/24 职场文书
2014年体育教师工作总结
2014/12/03 职场文书
2015年大学辅导员工作总结
2015/05/12 职场文书
Shell脚本一键安装Nginx服务自定义Nginx版本
2022/03/20 Servers