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 相关文章推荐
ASP小贴士/ASP Tips javascript tips可以当桌面
Dec 10 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
Dec 11 Javascript
JavaScript修改浏览器tab标题小技巧
Jan 06 Javascript
js实现滑动触屏事件监听的方法
May 05 Javascript
在JavaScript中操作时间之getYear()方法的使用教程
Jun 11 Javascript
第二篇Bootstrap起步
Jun 21 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
Aug 11 Javascript
JavaScript闭包和范围实例详解
Dec 19 Javascript
JavaScript实现动态增删表格的方法
Mar 09 Javascript
Angular4实现鼠标悬停3d倾斜效果
Oct 25 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
Jan 25 jQuery
js简单的分页器插件代码实例
Sep 11 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
日本收入最高的漫画家:海贼王作者版税年收入高达8.45亿元
2020/03/04 日漫
微信公众平台开发实现2048游戏的方法
2015/04/15 PHP
php实现URL加密解密的方法
2016/11/17 PHP
PHP替换Word中变量并导出PDF图片的实现方法
2020/11/26 PHP
jquery tools 系列 scrollable学习
2009/09/06 Javascript
jquery的ajax从纯真网(cz88.net)获取IP地址对应地区名
2009/12/02 Javascript
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
Google (Local) Search API的简单使用介绍
2013/11/28 Javascript
jQuery实现根据类型自动显示和隐藏表单
2015/03/18 Javascript
创建你的第一个AngularJS应用的方法
2015/06/16 Javascript
JS代码防止SQL注入的方法(超简单)
2016/04/12 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
Angular2整合其他插件的方法
2018/01/20 Javascript
vue自动化表单实例分析
2018/05/06 Javascript
vue组件实现可搜索下拉框扩展
2020/10/23 Javascript
JavaScript字符串处理常见操作方法小结
2019/11/15 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
2020/09/18 Javascript
echarts浮动显示单位的实现方法示例
2020/12/04 Javascript
Python实现的石头剪子布代码分享
2014/08/22 Python
python select.select模块通信全过程解析
2017/09/20 Python
django自定义模板标签过程解析
2019/12/14 Python
Pyspark获取并处理RDD数据代码实例
2020/03/27 Python
JAVA SWT事件四种写法实例解析
2020/06/05 Python
Python装饰器如何实现修复过程解析
2020/09/05 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
CSS3 :nth-child()伪类选择器实现奇偶行显示不同样式
2013/11/05 HTML / CSS
欧舒丹俄罗斯官方网站:L’OCCITANE俄罗斯
2019/11/22 全球购物
世界上最受欢迎的花店:1-800-Flowers.com
2020/06/01 全球购物
介绍一下except的用法和作用
2015/01/22 面试题
班子成员四风问题自我剖析材料
2014/09/29 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
学生党员批评与自我批评
2014/10/15 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
军训后的感想
2015/08/07 职场文书
Nginx四层负载均衡的配置指南
2021/06/11 Servers
Windows Server 修改远程桌面端口的实现
2022/06/25 Servers