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 相关文章推荐
风吟的小型JavaScirpt库 (FY.JS).
Mar 09 Javascript
js中对象的声明方式以及数组的一些用法示例
Dec 11 Javascript
深入探寻seajs的模块化与加载方式
Apr 14 Javascript
基于jquery实现的树形菜单效果代码
Sep 06 Javascript
详解JavaScript编程中正则表达式的使用
Oct 25 Javascript
两种方法解决javascript url post 特殊字符转义 + &amp; #
Apr 13 Javascript
Bootstrap和Java分页实例第一篇
Dec 23 Javascript
JS验证不重复验证码
Feb 10 Javascript
javascript作用域链与执行环境详解
Mar 25 Javascript
详解VUE 对element-ui中的ElTableColumn扩展
Mar 28 Javascript
vue实现的请求服务器端API接口示例
May 25 Javascript
vue3.0实现点击切换验证码(组件)及校验
Nov 18 Vue.js
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写的加密函数,支持私人密钥(详细介绍)
2013/06/09 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
PHP翻页跳转功能实现方法
2020/11/30 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
PHP MVC框架中类的自动加载机制实例分析
2019/09/18 PHP
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
2011/06/28 Javascript
js使用html()或text()方法获取设置p标签的显示的值
2014/08/01 Javascript
使用JavaScript开发IE浏览器本地插件实例
2015/02/18 Javascript
JavaScript html5 canvas绘制时钟效果(二)
2016/03/27 Javascript
node.js实现端口转发
2016/04/14 Javascript
字符串反转_JavaScript
2016/04/28 Javascript
JavaScript常用判断写法大全(推荐)
2016/05/30 Javascript
RequireJS简易绘图程序开发
2016/10/28 Javascript
Vue.js实战之使用Vuex + axios发送请求详解
2017/04/04 Javascript
Vuex实现计数器以及列表展示效果
2018/03/10 Javascript
node puppeteer(headless chrome)实现网站登录
2018/05/09 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)
2019/01/23 Javascript
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
[00:35]2016完美“圣”典风云人物:冷冷宣传片
2016/12/08 DOTA
Python使用random和tertools模块解一些经典概率问题
2015/01/28 Python
用Python进行基础的函数式编程的教程
2015/03/31 Python
利用Python生成文件md5校验值函数的方法
2017/01/10 Python
python+VTK环境搭建及第一个简单程序代码
2017/12/13 Python
python 定义n个变量方法 (变量声明自动化)
2018/11/10 Python
解决Python2.7中IDLE启动没有反应的问题
2018/11/30 Python
python3常用的数据清洗方法(小结)
2019/10/31 Python
利用Python的folium包绘制城市道路图的实现示例
2020/08/24 Python
python中zip()函数遍历多个列表方法
2021/02/18 Python
YSL圣罗兰美妆官方旗舰店:购买YSL口红
2018/04/16 全球购物
全球最大的瓷器、水晶和银器零售商:Replacements
2020/06/15 全球购物
医药销售自荐书
2014/05/29 职场文书
股东出资证明书范例
2014/10/04 职场文书
工作检讨书怎么写
2015/01/23 职场文书
2015年保送生自荐信
2015/03/24 职场文书
2016年感恩教师节活动总结
2016/04/01 职场文书
MySQL创建管理HASH分区
2022/04/13 MySQL