我有一个属性为arr:[]
的组件,我在init上通过this.get('arr').push('value one');
向该属性推送了一些值。如果我多次使用此组件,则arr
的值将保留在所有其他组件中。
例如:
如果我在组件init上推送一些值,this.get('arr').push('value one')
。
如果我使用这个组件一次它工作正常,但对于第二次使用/实例,arr已经有长度1,然后我推它。
看看这个旋风的控制台。
https://ember-twiddle.com/8a6527aebf829ee1876bccb5e3ee47b1
这种行为是奇怪的还是它应该像这样工作?
答案 0 :(得分:1)
根据您的示例预计会出现此行为,但通常情况下,这种情况通常不合适。来自Ember指南:https://guides.emberjs.com/v2.16.0/object-model/classes-and-instances/
直接在任何
Ember.Object
上定义的数组和对象在该类的所有实例之间共享。为避免此行为,建议在
init()
期间初始化这些数组和对象属性。这样做可确保每个实例都是唯一的。
建议在您的示例中实施以下内容:
arr: null,
init() {
this.set('arr', []);
// .......
}
下面的EmberTwiddle提供了另一个“粗略”的例子:https://ember-twiddle.com/1006a702aa09c6d365bd1a46ca283059?openFiles=components.my-component.js%2C