优化 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(); //清空方法中调用即可