利用闭包实现 清空数据 重置数据 clearAll 删除

优化 2021年3月30日16:54:21

import _ from 'lodash'
function clearAddObject(vm, name) {
    let temp
    let clearAllIn = () => {
        vm[name] = _.cloneDeep(temp)
    }
    vm[name].clearAll = clearAllIn
    temp = _.cloneDeep(vm[name])
}

export default { clearAddObject }

使用

  mounted() {
 myUtils.clearAddObject(this,'addObject')
 }

背景:由于后端老改字段,那么我data中的参数也得跟着改,清空方法里也得跟着改,如果能把最初的参数利用闭包缓存那么我就不需要担心后端改字段了,而且不需要修改任何地方。

  //整柜查价请求参数
      fclRequestParams: {
        carrier: "",
        days: 0,
        etdDateFrom: "",
        etdDateTo: "",
        etdWeek: 0,
        pod: "",
        pol: "",
      },

初始化的查询参数。
created生命周期中,这个需要立即执行

  created() {
    (() => {
      // 不能用json 方法会被删除  解决:把方法放出去后面再挂载
      let innerData = JSON.parse(JSON.stringify(this.fclRequestParams));//利用闭包缓存
      let clearMethods = () => {//把方法放出去后面再挂载 不然执行一次,下一次赋值中的对象没有此方法了
        // console.log(innerData); //这里不json的话 会把地址复制给他,这样就没意义了
        this.fclRequestParams = JSON.parse(JSON.stringify(innerData));
        this.fclRequestParams.clearMethods = clearMethods;
      };
      this.fclRequestParams.clearMethods = clearMethods;
    })();
  },

使用

this.fclRequestParams.clearMethods();  //清空方法中调用即可
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值