不太确定我是否做错了什么,但就是这样。
我制作了一个具有一些属性的组件,所有这些属性都在其组件实例的范围内正常工作。 然而,当我添加一个带有数组值的属性时,它的行为出乎意料:当一个元素通过@set被推送到组件的数组中时,它会被推送到每个组件的属性中。
我假设你有这样的东西:
App.MyThingsComponent = Ember.Component.extend({
things: []
}):
这将对所有组件使用相同的数组实例,因为它是在定义类时计算的,而不是在实例化时计算的。
您可以通过在组件初始化时实例化数组来解决此问题:
App.MyThingsComponent = Ember.Component.extend({
things: null,
setupThings: function(){
this.set("things", []);
}.on("init")
}):
现在,您将为每个组件实例获得一个新的数组实例,并且事情应该如您所愿。
第
非常感谢! 那么这是预期的行为吗? 例如,它为什么不能以这种方式使用字符串?
@Geokoumpa这是由于 Javascript 的原型继承。 这是来自@wycats 的详尽博客文章,对于了解 Javascript 的这一方面很有用。
http://yehudakatz.com/2011/08/12/understanding-prototypes-in-javascript/
最有用的评论
我假设你有这样的东西:
这将对所有组件使用相同的数组实例,因为它是在定义类时计算的,而不是在实例化时计算的。
您可以通过在组件初始化时实例化数组来解决此问题:
现在,您将为每个组件实例获得一个新的数组实例,并且事情应该如您所愿。
第