Ember.js: Array-Eigenschaftswert, der von Instanzen einer Komponente geteilt wird

Erstellt am 11. Dez. 2013  ·  3Kommentare  ·  Quelle: emberjs/ember.js

Ich bin mir nicht ganz sicher, ob ich etwas falsch gemacht habe, aber hier ist es.
Ich habe eine Komponente mit einigen Eigenschaften erstellt, die alle im Bereich ihrer Komponenteninstanz korrekt funktionieren. Wenn ich jedoch eine Eigenschaft mit einem Array-Wert hinzugefügt habe, verhält sie sich unerwartet: Wenn ein Element über @set in das Array einer Komponente verschoben .

Hilfreichster Kommentar

Ich nehme an, Sie haben so etwas wie:

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

Dadurch wird dieselbe Instanz des Arrays für alle Komponenten verwendet, da sie bei der Definition der Klasse ausgewertet wird, nicht bei der Instanziierung.

Sie können dies beheben, indem Sie das Array instanziieren, wenn die Komponente initialisiert wird:

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

Jetzt erhalten Sie für jede Komponenteninstanz eine neue Array-Instanz und die Dinge sollten sich wie erwartet verhalten.

hth

Alle 3 Kommentare

Ich nehme an, Sie haben so etwas wie:

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

Dadurch wird dieselbe Instanz des Arrays für alle Komponenten verwendet, da sie bei der Definition der Klasse ausgewertet wird, nicht bei der Instanziierung.

Sie können dies beheben, indem Sie das Array instanziieren, wenn die Komponente initialisiert wird:

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

Jetzt erhalten Sie für jede Komponenteninstanz eine neue Array-Instanz und die Dinge sollten sich wie erwartet verhalten.

hth

Vielen Dank! Ist dieses Verhalten also beabsichtigt? Wie kommt es, dass das zum Beispiel bei Strings nicht so funktioniert?

@Geokoumpa dies liegt an der prototypischen Vererbung von Javascript. Hier ist ein ausführlicher Blogbeitrag von @wycats , der nützlich ist, um mehr über diesen Aspekt von Javascript zu erfahren.

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

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen