Ember.js: Valor de propriedade de matriz compartilhado entre instâncias de um componente

Criado em 11 dez. 2013  ·  3Comentários  ·  Fonte: emberjs/ember.js

Não tenho certeza se fiz algo errado, mas aqui está.
Fiz um componente com algumas propriedades, todas elas funcionando corretamente no escopo de sua instância de componente. No entanto, quando adicionei uma propriedade com um valor de matriz, ela se comportou de maneira inesperada: quando um elemento é colocado na matriz de um componente por meio de

Comentários muito úteis

Suponho que você tenha algo como:

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

Isso usará a mesma instância da matriz para todos os componentes porque é avaliada quando a classe é definida, não quando é instanciada.

Você pode corrigir isso instanciando a matriz quando o componente é inicializado:

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

Agora você obterá uma nova instância de array para cada instância de componente e as coisas devem se comportar como você espera.

hth

Todos 3 comentários

Suponho que você tenha algo como:

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

Isso usará a mesma instância da matriz para todos os componentes porque é avaliada quando a classe é definida, não quando é instanciada.

Você pode corrigir isso instanciando a matriz quando o componente é inicializado:

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

Agora você obterá uma nova instância de array para cada instância de componente e as coisas devem se comportar como você espera.

hth

Muito obrigado! Então, esse é o comportamento pretendido? Por que não funciona assim com strings, por exemplo?

@Geokoumpa isso se deve à herança do protótipo do Javascript. Aqui está uma postagem de blog completa de @wycats que é útil para aprender sobre esse aspecto do Javascript.

http://yehudakatz.com/2011/08/12/understanding-prototypes-in-javascript/

Esta página foi útil?
0 / 5 - 0 avaliações