收藏
回答

如何重置data初始化时的数据?

比如一些交互操作更改一些数据过程中断网,重新加载onLoad方法但data数据不会重置,如何获取未修改前的data?比如vue中的this.$options.data()

最后一次编辑于  08-07
回答关注问题邀请回答
收藏

2 个回答

  • Why not?
    Why not?
    08-07

    你的需求或者目的到底是什么?你提的问题似乎只是具体某一种解决方案如何在小程序上实现。

    就你这个问题本身而言,你的逻辑是不是这样:操作数据,data变成了data' -> 网络异常(你做了什么,断网需要回滚数据变更?) -> 恢复data'为data?

    08-07
    赞同
    回复 10
    • 林墨清染
      林墨清染
      08-07
      是的 回到最初的data
      08-07
      回复
    • Why not?
      Why not?
      08-07回复林墨清染
      那你在网络请求前记录下变更前的数据,如果网络请求失败,把数据再设置回去不就好了?
      08-07
      回复
    • 林墨清染
      林墨清染
      08-07回复Why not?
      逻辑是这样 实际无法获取当前页最初的data
      08-07
      回复
    • Why not?
      Why not?
      08-07回复林墨清染
      如果是恢复到页面刚已启动时的data,那你可以把data初始化写个initData的方法,在页面初始化时和需要恢复数据时分别调用就可以了,也就多两三行代码吧
      08-07
      回复
    • 林墨清染
      林墨清染
      08-07回复Why not?
      不行 onLoad最先加载initData方法得到的this.data 还是 setData后的Data
      08-07
      回复
    查看更多(5)
  • 思男
    思男
    08-07

    可以选择用redirectTo当前页面,等于把之前的页面杀死重新打开一个新的。

    保证数据都是最新的。


    或者你把页面初始化的数据单独存储一份,用的时候取。

    比如进入页面数据初始化之后直接this.data.backUp = this.data;

    08-07
    赞同
    回复 20
    • 林墨清染
      林墨清染
      08-07
      上百个页面 每个页面都写一次?
      08-07
      回复
    • 思男
      思男
      08-07回复林墨清染
      封装个方法上百个页面直接调用不就行了。或者选择第一种。
      08-07
      回复
    • 林墨清染
      林墨清染
      08-07回复思男
      还是每个页面写一次
      08-07
      回复
    • 思男
      思男
      08-07回复林墨清染
      你用this.$options.data()重置不也是每个页面写一次?????????
      08-07
      回复
    • 林墨清染
      林墨清染
      08-07回复思男
      封装个方法 this.data是实时数据,而this.$options.data()始终是最初data,this.data.backUp = this.data 实际操作无效
      08-07
      回复
    查看更多(15)
问题标签