【问题标题】:Avoid data binding between variables in Angular 2避免 Angular 2 中变量之间的数据绑定
【发布时间】:2017-03-20 15:55:25
【问题描述】:

我在 Angular 2 中有一个类,我需要两个具有相同 json 值的变量,但我需要更改一个并且我需要保留另一个作为第一个的备份,如下所示:

export class Table {
  var1: any;
  var2: any;
}

然后,向 API 发出请求:

ajax_request().then(data => {
  this.var1 = data;
  this.var2 = data;
});

如果我在 this.var2 中进行更改,this.var1 也会被更改。

为了避免这种情况,我正在制作:

this.var1 = data;
this.var2 = JSON.stringify(this.var1);
this.var2 = JSON.parse(this.var2);

但我知道这对性能不友好。 这样做的适当方法是什么?

【问题讨论】:

    标签: angular data-binding


    【解决方案1】:

    这与 Angular2 数据绑定无关,这只是 JavaScript 的工作原理。

    您需要创建对象的副本,以免一个引用的更改影响对同一对象的另一个引用 - 就像您在当前解决方法中所做的那样。

    另见https://stackoverflow.com/a/5344074/217408

    【讨论】:

    • 谢谢。大(我的)错误说这是 Angular 2 的问题。
    • 易于制作。它的工作方式与您对数字、字符串、布尔值等原始值的预期方式相同,但对于对象,仅复制引用,而不复制内容。
    • 是的。毕竟,我发现 JSON.parse(JSON.stringify(this.var1)) 是最好的方法。
    【解决方案2】:
    this.var1  = Object.assign({}, data);
    

    【讨论】:

    • 不起作用。
    • 虽然这段代码 sn-p 可以解决问题,包括解释 really helps 以提高您的帖子质量。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人!请edit您的答案添加解释,并说明适用的限制和假设。
    猜你喜欢
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    相关资源
    最近更新 更多