ionic页面返回不刷新问题

前言:

本页面回到上一个页面,实现上一个页面刷新算是ionic4比较难的部分了,其中踩了很多的坑,今天就彻彻底底的来解决一下这个问题!

场景直现

从页面A进入页面B,页面B进行操作后会影响页面A数据,此时返回A页面,页面数据没有重新加载

为什么会是难点

因为ionic为了提高性能将页面存到了缓存中,不能触发页面刷新,只是将上一个页面显示出来。像我们之前在 ngOnInit() {}里面以及构造函数写的方法都不会触发。它只会触发一次。

解决办法

接下来将是四个解决办法,方法一不建议,有时候会出错,方法二可以使用,但不是所有的情况都能解决,方法三也比较常用,建议查看ionic生命周期函数,方法四是观察者模式EventEmitter

方法一(有时候不起作用)不建议使用

此时需要引用NavController ,并且声明一下

import { NavController } from '@ionic/angular';
constructor(
    public nav: NavController,
  )
// 方法:
back(){
    this.nav.navigateRoot(['/yemiana']);
    location.reload();
  }

这里简单的说下为什么此方法没有效果:因为当有时候网络慢的时候,本页面还没有跳到上一个页面的时候,就执行了刷新,此时刷新的还是本页面,跳转就不起作用了。

方法二(亲测能用)但是界面会闪一下,用户体验不好

back(){
    location.replace('#/printscreenstu');
    location.reload();
   }

方法三(用钩子函数)特别常用

这个网上对应的钩子函数特别多,这里只列出其中一个,不多解释,这个函数表达的意思就是将要进入页面的时候,触发此方法,但是它对于模态,以及登录信息的消息校验是没有用的,对tabs页面之间的切换,以及两个页面之间跳转可以起到作用

  ionViewWillEnter() {
  //这两个方法在将要进入界面的时候会触发,相当于是局部刷新,整个页面不会跟着刷新
    this.GetStuAllFirstPicture();   
    this.GetPerYearPicCount();
  }

方法四(最彻底,最官方的解决办法)使用 EventEmitter 事件驱动 实现页面通讯,可以解决所有的页面的跳转,然后页面刷新问题,消除页面整体刷新的弊端

1.新建立一个服务services

ionic g service services/event

这里会创建两个文件event.service.ts和event.serveice.spec.ts

2.安装配置EventEmitter:

npm install--save eventemitter3

3.定义公共的服务配置—在event.service.ts中

import { Injectable } from '@angular/core';
import {EventEmitter} from 'eventemitter3';
@Injectable({
  providedIn: 'root'
})
export class EventService {
  public event: any;
  constructor() { 
    this.event=new EventEmitter();  //这个实例就会被多个组件共享,来实现不同页面的数据通信
  }
}

4.页面B消失的时候发送广播

先引入 : EventService

import{EventService}from'../services/event.service';

声明:

public eventService: EventService

监听:

 // B页面操作结束后,进行广播,相当于通知A页面,我(B)发生了更改注意更新
    this.eventService.event.emit('useraction');

5.页面a监听事件广播

先引入 : EventService

import{EventService}from'../services/event.service';

声明:

 public eventService: EventService
监听事件广播,通知页面a更新数据

    this.eventService.event.on('useraction', () => {
     //更新数据 方法 内容
            ......
    })

内容转自下方链接,略有修改,在此仅作学习和分享,不做他用。

————————————————

版权声明:本文为CSDN博主「光哥_帅」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/jerry11112/article/details/91346934

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值