vue 详情页修改数据返回主页面后修改主页面该条数据且其他数据保留

42 篇文章 1 订阅
40 篇文章 7 订阅

目标需求:
1:从a页面(例如表格、表单等)某行数据跳转到b页面,
2:b页面不调用后端接口,只是前端页面的数据修改,
3:修改b页面数据后,返回a页面,此时a页面该行数据修改,且其他数据保持不变;
实现原理:
1:a页面跳转b页面,数据可由路由带过去;
2:b页面跳转a页面,b页面修改a页面的数据,通过eventBus修改;
3:b页面跳转a页面,a页面数据保留的数据,通过keep-alive方式;
相关文档:
1:eventBus:链接
2:keep-alive vue2.0: 链接
3:keep-alive vue3.0: 链接

实现过程

1、main.js

全局注册bus实例
方便后续调用,实现b页面修改a页面数据

new Vue({
    el: '#app',
    router,
    store, //使用store vuex状态管理
    components: { App },
    template: '<App/>',
    data: {
        // 空的实例放到根组件下,所有的子组件都能调用
        Bus: new Vue()
    }
})
2、app.vue

引入keep-alive
实现a页面原数据的保留

  <div id="app">
    <keep-alive>
      <router-view v-if="$route.meta.keepAlive" />
    </keep-alive>
    <router-view v-if="!$route.meta.keepAlive" />
  </div>
3、router中

为a页面添加属性,便于判断出该页面需要数据保留

 {
      path: '/demoA',
      name: 'demoA',
      component: demoA,
      meta:{
          keepAlive:true // 需要缓存
      }
    },
4、b页面

使用路由返回的方式,保证a页面原数据不被刷新
通过eventBus将b页面修改数据传给a页面

<van-button type="info" @click="goBack">确定</van-button>
<script>
	methods: {
		goBack () {
      		window.history.back()
      		this.$root.Bus.$emit('toggle', this.value) // this.value:需要传输的数据
   	    }
    }
</script>
5、a页面

获取a页面传过来的数据

// 事件监听---在created或者mounted中
this.$root.Bus.$on('事件名称', value => {
  // value即为b页面传过来的数据
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hyduan200

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值