我遇到了解预期的Ember.Component隔离行为的问题。我的理解是,渲染同一组件的多个实例不应导致组件之间共享属性。
我看到相反的行为,其中更新组件上的属性(从组件本身内)更新当前在页面上呈现的该组件的其他实例上的相同属性。
以下是此问题的示例:http://jsbin.com/naworoyimoto/1/edit
这是一个错误还是我误解了Ember.Component中的隔离效果如何?
答案 0 :(得分:17)
我认为您正在体验JavaScript对象引用的有趣特性。我前面遇到了这个问题,事实证明,因为我在类定义中的属性上定义数组,它导致该类的所有实例引用相同的数组对象。
我通常解决这个问题的方法是将我想要成为数组的属性设置为null,然后在init方法中设置数组。这可以确保每个实例都创建自己的数组,而不是与其他实例共享数组引用!
这里是我的jsbin示例的分支,我的修复已应用:http://jsbin.com/xulidefikuyu/1/