首页 文章

将变量设置为初始值

提问于
浏览
0

有没有办法将变量值恢复为初始值?我总共声明了40个变量,在save()之后我需要重置每个变量,例如:

client = ''; select = '0'; products = [];

constructor(private http: Http){}

save(objSave){
  this.http.post('url', objSave).subscribe(data => this.clearFields());
}

clearFields(){
  this.client = '';
  this.select = '0';
  this.products = [];
}

但我正在寻找一种更有效或更短的方式来做到这一点 . 有什么想法吗?

2 回答

  • 1

    使用Lodash cloneDeep的一个可能的解决方法是:

    将初始变量值定义为保持对象的字段

    defaultVariables: any = {
      client: '', 
      select: '0',
      products: []
    }
    workingVariables: any;
    

    不要触摸该对象,使用 _.cloneDeep 创建它的克隆并开始处理克隆对象:

    import * as _ from 'lodash';
    
    ngOnInit() {
      this.workingVariables = _.cloneDeep(this.defaultVariables);
    }
    

    然后在 clearFields 函数中,再次使用 _.cloneDeep 重置数据:

    clearFields(){
      this.workingVariables = _.cloneDeep(this.defaultVariables);
    }
    
  • 1

    哈利的答案很好:)只是想表明你可以不用lodash这样做,只需使用Object.assign() . 这里's a sample using Harry' s代码示例有一些变化:

    defaultVariables: any = {
      client: '', 
      select: '0',
      products: []
    }
    
    workingVariables: any;
    
    ngOnInit() {
      this.workingVariables = Object.assign({}, this.defaultVariables)
    }
    
    clearFields(){
      this.workingVariables = Object.assign({}, this.defaultVariables)
    }
    

相关问题