Ember.js: Valor de propiedad de matriz compartido entre instancias de un componente

Creado en 11 dic. 2013  ·  3Comentarios  ·  Fuente: emberjs/ember.js

No estoy seguro de haber hecho algo mal, pero aquí está.
He creado un componente con algunas propiedades, y todas funcionan correctamente en el ámbito de su instancia de componente. Sin embargo, cuando agregué una propiedad con un valor de matriz, se comporta de manera inesperada: cuando un elemento se inserta en la matriz de un componente a través de @set , se inserta en la propiedad de cada componente.

Comentario más útil

Supongo que tienes algo como:

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

Esto usará la misma instancia de la matriz para todos los componentes porque se evalúa cuando se define la clase, no cuando se crea una instancia.

Puede solucionar esto creando una instancia de la matriz cuando se inicializa el componente:

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

Ahora obtendrá una nueva instancia de matriz para cada instancia de componente y las cosas deberían comportarse como espera.

hth

Todos 3 comentarios

Supongo que tienes algo como:

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

Esto usará la misma instancia de la matriz para todos los componentes porque se evalúa cuando se define la clase, no cuando se crea una instancia.

Puede solucionar esto creando una instancia de la matriz cuando se inicializa el componente:

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

Ahora obtendrá una nueva instancia de matriz para cada instancia de componente y las cosas deberían comportarse como espera.

hth

¡Muchas gracias! Entonces, ¿es este comportamiento previsto? ¿Por qué no funciona de esta manera con cadenas, por ejemplo?

@Geokoumpa esto se debe a la herencia prototípica de Javascript. Aquí hay una publicación de blog completa de @wycats que es útil para aprender sobre ese aspecto de Javascript.

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

¿Fue útil esta página
0 / 5 - 0 calificaciones