Ember.js: 组件实例之间共享的数组属性值

创建于 2013-12-11  ·  3评论  ·  资料来源: emberjs/ember.js

不太确定我是否做错了什么,但就是这样。
我制作了一个具有一些属性的组件,所有这些属性都在其组件实例的范围内正常工作。 然而,当我添加一个带有数组值的属性时,它的行为出乎意料:当一个元素通过@set被推送到组件的数组中时,它会被推送到每个组件的属性中。

最有用的评论

我假设你有这样的东西:

App.MyThingsComponent = Ember.Component.extend({
  things: []
}):

这将对所有组件使用相同的数组实例,因为它是在定义类时计算的,而不是在实例化时计算的。

您可以通过在组件初始化时实例化数组来解决此问题:

App.MyThingsComponent = Ember.Component.extend({
  things: null,
  setupThings: function(){
    this.set("things", []);
  }.on("init")
}):

现在,您将为每个组件实例获得一个新的数组实例,并且事情应该如您所愿。

所有3条评论

我假设你有这样的东西:

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/

此页面是否有帮助?
0 / 5 - 0 等级