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 相关文章推荐
ajax无刷新动态调用股票信息(改良版)
Nov 01 Javascript
百度移动版的url编码解码示例
Apr 29 Javascript
javascript 应用小技巧方法汇总
Jul 05 Javascript
EasyUI闪屏EasyUI页面加载提示(原理+代码+效果图)
Feb 21 Javascript
JavaScript面试开发常用的知识点总结
Aug 08 Javascript
js正则表达式验证密码强度【推荐】
Mar 03 Javascript
微信小程序 生命周期函数详解
May 24 Javascript
如何从零开始手写Koa2框架
Mar 22 Javascript
BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑
Sep 05 Javascript
jQuery 查找元素操作实例小结
Oct 02 jQuery
Openlayers绘制地图标注
Sep 28 Javascript
JS算法教程之字符串去重与字符串反转
Dec 15 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将数据库中所有内容生成静态html文档的代码
2010/04/12 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
2014/07/01 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
静态页面下用javascript操作ACCESS数据库(读增改删)的代码
2007/05/14 Javascript
Google Map Api和GOOGLE Search Api整合实现代码
2009/07/18 Javascript
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
了解一点js的Eval函数
2012/07/26 Javascript
分分钟玩转Vue.js组件(二)
2017/03/01 Javascript
js oncontextmenu事件使用详解
2017/03/25 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
vue左右侧联动滚动的实现代码
2018/06/06 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
2018/08/24 Javascript
Vue中使用clipboard实现复制功能
2018/09/05 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
vue+iview动态渲染表格详解
2019/03/19 Javascript
ES6 class的应用实例分析
2019/06/27 Javascript
JS中this的4种绑定规则详解
2020/02/04 Javascript
Vue实现背景更换颜色操作
2020/07/17 Javascript
VUE项目axios请求头更改Content-Type操作
2020/07/24 Javascript
JS+CSS实现动态时钟
2021/02/19 Javascript
vue中axios封装使用的完整教程
2021/03/03 Vue.js
学习python (2)
2006/10/31 Python
Python中使用copy模块实现列表(list)拷贝
2015/04/14 Python
Python文档生成工具pydoc使用介绍
2015/06/02 Python
Python中特殊函数集锦
2015/07/27 Python
python urllib urlopen()对象方法/代理的补充说明
2017/06/29 Python
Python tkinter模块中类继承的三种方式分析
2017/08/08 Python
Python3实现的画图及加载图片动画效果示例
2018/01/19 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
2018/06/26 Python
python中报错&quot;json.decoder.JSONDecodeError: Expecting value:&quot;的解决
2019/04/29 Python
浅谈Django中的QueryDict元素为数组的坑
2020/03/31 Python
python中的错误如何查看
2020/07/08 Python
彪马荷兰官网:PUMA荷兰
2019/05/08 全球购物
软件工程毕业生自荐信
2014/07/04 职场文书
2016情人节宣传语
2015/07/14 职场文书
MySQL 数据库 增删查改、克隆、外键 等操作
2022/05/11 MySQL