ionic3三种跳转方法对应的页面间数据传递及Events
来源:互联网 发布:物流打印软件 编辑:程序博客网 时间:2024/06/05 22:32
//这是我刚写的(时间戳11月9日):ionic3回顶部操作,希望对你有用
点这里
// 今天来看看,没想到文章突然变成这样难看了,不知道为什么会这样。哎,已经不想用csdn了
1.将数据传递到要跳转到的页面
(1)push()
要将新页面推送到堆栈,可使用push方法。同时也可以通过将数据传递给push方法的第二个参数,来将数据传递给下一个页面。
import {LoginPage } from'./login';...pushPage(){ this.navCtrl.push(LoginPage, { id: 123, name: "Carl"});
(2)[navParams]属性:
import {LoginPage } from'./login';...@Component()class MyPage { params; pushPage: any; constructor(){ this.pushPage= LoginPage; this.params ={ id:123, name: "Carl" }; }}
然后在模板中跳转:
<button ion-button [navPush]="pushPage [navParams]="params"> Go</button>
(3)modal的create方法(与push()同理,数据作为create()方法的第二个参数)
import {LoginPage } from'./login';...presentLoginPage() { let modal =this.modalCtrl.create(LoginPage , { id:123,name: "Carl"} ); modal.present();}
数据传递到下个页面后,该页面如何接收呢?
用NavParams来接收数据。
首先导入NavParams ,然后注入到构造函数。
import { NavParams } from 'ionic-angular'; ...userInfo;constructor(public params: NavParams) { this.userInfo = params.data; }
也可以使用params的get()方法接收,数据是以键值对形式存储的,传入键作为get()的参数
this.params.get('id');
则将得到:123
2.将数据传递到Tabs的页面,用[rootParams]属性:
首先将数据按上方法传递到Tabs并接收(比如接收为userInfo),然后在Tabs模板中将数据传递到要传递的页面:
<ion-tabs>... <ion-tab [root]="tab1Root" tabTitle="home" tabIcon="home" [rootParams]="userInfo"> </ion-tab>...</ion-tabs>
加入[rootParams]属性,将把数据userInfo传递到该页面,然后在该页面再用params接收即可。
3.使用Events发布订阅事件:
上面所说的方法,有很大的局限:只能传递到要跳转到的页面。
如果要把数据传递到任何一个页面,使用Events,官网点这里 。
发布页面:
import { Events } from 'ionic-angular'; //导入...export class EventsPage { user = '来自Events的数据' constructor(public events: Events) {} publishEvents(user) { console.log('User created!') this.events.publish('user:created',this.user, Date.now()); console.log(this.user) }}
要接收数据的页面(订阅页面):
import { Component} from '@angular/core';import { Events } from 'ionic-angular';@Component({ selector: 'page-home', templateUrl: 'home.html'})export class HomePage { myEvent; constructor(public events: Events) { events.subscribe('user:created', (user, time) => { HomePage.prototype.myEvent = user; }); }}
注意:订阅必须再发布之前,不然接收不到。打个比喻:比如微信公众号,你要先关注才能接收到它的推文,不然它再怎么发推文,你也收不到。也就是说,接收页面必须在发布页面前被加载过。
另外,.subscribe()方法中有点this作用域的问题,对于这,我一般都是简单粗暴的用类名指定:HomePage.prototype.myEvent
如有错误,请大佬们指出,不胜感激!
阅读全文
0 0
- ionic3三种跳转方法对应的页面间数据传递及Events
- ionic3的页面的三种跳转
- ionic3+angular4--页面间数据传递
- StoryBoard实现的页面跳转以及数据传递的方法
- iOS页面跳转及数据传递
- iOS页面跳转及数据传递
- iOS页面跳转及数据传递
- iOS页面跳转及数据传递
- iOS页面跳转及数据传递
- iOS页面跳转及数据传递
- iOS页面跳转及数据传递
- iOS页面跳转及数据传递
- iOS页面跳转及数据传递
- iOS页面跳转及数据传递
- iOS页面跳转及数据传递
- iOS页面跳转及数据传递
- Ionic3项目开发——页面跳转与参数传递
- PHP跳转页面的三种方法
- 如何搭建直播平台?低延时连麦+人工智能让互动升级
- 【DIY】打造一个六足蜘蛛机器人
- PHP通过PHP QR Code生成二维码
- Spring MVC中快速集成swagger2
- Oracle介绍(一)
- ionic3三种跳转方法对应的页面间数据传递及Events
- 基于HtmlUnit获取页面表格信息
- Cocos2dx Android工程的启动过程
- HDU1269
- 帮你全面彻底搞定MATERIAL DESIGN的学习笔记
- always模块的使用方法
- hdu 1176 免费馅饼 (动态规划)
- iOS 10 调用系统相册相机出现问题:-> 0x183a58d9c <+8>: b.lo 0x183a58db4 ; <+32>
- 博客迁移通知