Vue关于使用JSON parse和Stringly解决数据双向流动的问题

  最近,在完成公司项目某模块的时候,遇到这样一个授权需求。需要在B 页面内选中某一条数据,然后关闭B页面后,A页面上tables也会出现B页面内选中的信息。然后,当B页面重新打开后,B页面需要重新映射回选中的那些属性信息。

  在完成这个需求的时候,出现这样一个问题。

  在B页面选择想要授权的信息后,还未确认,A页面上也会同时生产授权信息。

  A页面为父组件,B页面为子组件。A页面是通过调用B页面的方法进行传值的。代码如下

    this.$ref.test.diliverData(this.rowS);

    diliverData 是B页面的方法。this.rowS是A页面tables的所有信息集合。

   B页面如此接收

   diliverData(val){

      this.checkedRow = val ;   

}

而这时候,如果我重新打开B页面,想要添加新的信息时,B页面点击后,A页面也会随之发生变化。

研究以后,发现这是由A页面所传递的this.rowS是一个对象,而B页面接收的也是一个对象,即深拷贝。这样的话,无论在B页面如何修改rows的值,A页面也会发生变化,因为修改的是同一个对象。

如何解决呢?

使用JSON 的Stringly和Prase进行封装和解析。

A页面:

this.$ref.test.diliverData(JSON.Stringly(this.rows));

B页面:

this.checkedRow = JSON.prase(val);

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值