APP中:vue-h5项目监听从别的项目页面返回进行刷新

很多项目是内嵌在app中的。如在一个卡券列表页面,点击了领券跳转。跳转到领券页面领取了卡券,点击返回到卡券列表的时候需要刷新页面。重新获取数据。
1.将监听放在主页面

window.postEvent = (res) => {
        const pathName = this.$route.name
        let routesArr = ['home', 'xx', 'xx', 'xx']
        if (res.eventType === 'appear' && routesArr.includes(pathName)) {
          if (pathName === 'home') {
           //刷新操作
          } else {
           //xxx
          }
        }
 };

2.除了项目的home页应该出现刷新,其他页面跳转后再返回到该页面也需要进行刷新。但是postEvent 事件是只能被定义一次,但可以在别的页面调用home页面的该事件(小项目中调用兄弟组件的事件可以用bus-vue中的中央事件总线)。
1.在main.js中new一个vue对象

var bus = new Vue()
export default bus

2.在组件中引入bus的引用

import bus from '../../main'

3.通过emit触发事件传值(需要调用方法的页面中)

//比如car页面
bus.$emit('rushPage','');

4.home页面用on监听事件

bus.$on('rushPage',function (msg) {
 // 监听路由
 window.postEvent = (res) => {
        const pathName = this.$route.name
        let routesArr = ['home', 'car', 'xx', 'xx']
        if (res.eventType === 'appear' && routesArr.includes(pathName)) {
          if (pathName === 'home') {
           //刷新操作
          } else {
           //xxx
          }
        }
        if (pathName === 'car') {
           //刷新操作
          } else {
           //xxx
          }
 };
});

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在uni-app,可以使用 `vue-router` 来实现H5右滑返回上一个页面而不是退出页面的功能。具体来说,你需要在 `vue-router` 配置 `routes` 时,将 `meta` 字段的 `keepAlive` 属性设置为 `true`,表示需要缓存页面状态,这样在返回上一个页面时就不会重新加载页面。 下面是一个简单的示例代码: ```javascript import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) export default new Router({ routes: [ { path: '/', name: 'home', component: () => import('@/views/Home'), meta: { keepAlive: true // 缓存页面状态 } }, { path: '/detail', name: 'detail', component: () => import('@/views/Detail'), meta: { keepAlive: true // 缓存页面状态 } } ] }) ``` 在上面的代码,我们使用 `meta` 字段来配置页面的一些属性,其 `keepAlive` 属性为 `true` 表示需要缓存页面状态。在页面,你可以通过监听 `beforeRouteLeave` 钩子来实现右滑返回的功能。 下面是一个简单的示例代码: ```javascript export default { name: 'Detail', beforeRouteLeave(to, from, next) { if (from.name === 'home') { history.pushState(null, null, document.URL) // 将当前状态推入历史记录栈 } next() } } ``` 在上面的代码,我们通过监听 `beforeRouteLeave` 钩子来实现在离开当前页面时将当前状态推入历史记录栈的功能,这样在右滑返回时就会返回到前一个页面,而不是退出页面。需要注意的是,我们通过判断 `from.name` 来确定是否从前一个页面返回,如果是从其他页面返回则不执行推入历史记录栈的操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值