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 相关文章推荐
Js 获取当前日期时间及其它操作实现代码
Mar 04 Javascript
JQery jstree 大数据量问题解决方法
Mar 09 Javascript
jQuery事件 delegate()使用方法介绍
Oct 30 Javascript
jQuery向后台传入json格式数据的方法
Feb 13 Javascript
angularjs学习笔记之三大模块(modal,controller,view)
Sep 26 Javascript
Jquery元素追加和删除的实现方法
May 24 Javascript
微信小程序 支付功能开发错误总结
Feb 21 Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
Jun 27 Javascript
使用validate.js实现表单数据提交前的验证方法
Sep 04 Javascript
详解JavaScript中的强制类型转换
Apr 15 Javascript
layui使用表格渲染获取行数据的例子
Sep 13 Javascript
Vue v-for循环之@click点击事件获取元素示例
Nov 09 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实现登陆验证码(类似条行码状)
2006/10/09 PHP
php使用curl出现Expect:100-continue解决方法
2015/03/03 PHP
分享php邮件管理器源码
2016/01/06 PHP
php数值转换时间及时间转换数值用法示例
2017/05/18 PHP
laravel validate 设置为中文的例子(验证提示为中文)
2019/09/29 PHP
jquery keypress,keyup,onpropertychange键盘事件
2010/06/25 Javascript
jQuery快速上手:写jQuery与直接写JS的区别详细解析
2013/08/26 Javascript
jquery text()方法取标签中的文本
2014/07/25 Javascript
Javascript控制div属性动态变化实例分析
2015/10/08 Javascript
简单谈谈JavaScript的同步与异步
2015/12/31 Javascript
jQuery flip插件实现的翻牌效果示例【附demo源码下载】
2016/09/20 Javascript
jQuery ajaxForm()的应用
2016/10/14 Javascript
Vue中正确使用jQuery的方法
2017/10/30 jQuery
JavaScript实现的简单加密解密操作示例
2018/06/01 Javascript
vue项目实现github在线预览功能
2018/06/20 Javascript
mpvue写一个CPASS小程序的示例
2018/09/04 Javascript
Vue-axios-post数据后端接不到问题解决
2020/01/09 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
Python实现身份证号码解析
2015/09/01 Python
解读Python编程中的命名空间与作用域
2015/10/16 Python
Python中查看文件名和文件路径
2017/03/31 Python
Python一个简单的通信程序(客户端 服务器)
2019/03/06 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
python通用读取vcf文件的类(复制粘贴即可用)
2020/02/29 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
Sisley法国希思黎中国官网:享誉全球的奢华植物美容品牌
2019/06/30 全球购物
用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
2014/01/05 面试题
人事行政主管岗位职责
2013/12/22 职场文书
连带责任保证书
2014/04/29 职场文书
优秀员工推荐信
2014/05/10 职场文书
反洗钱宣传活动总结
2014/08/26 职场文书
事业单位人员的自我评价范文
2014/09/21 职场文书
护士个人年度总结范文
2015/02/13 职场文书
简单聊聊TypeScript只读修饰符
2022/04/06 Javascript