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
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/
Comentários muito úteis
Suponho que você tenha algo como:
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:
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