Warum wird meine Vorlage nicht aktualisiert, wenn ich die Eigenschaft ändere, die sie rendert? Die documentation besagt, dass {{each}}
Bindings-bewusst ist, aber es gibt offensichtlich etwas, das mir nicht bewusst ist.Ember, meine Vorlage wird nicht aktualisiert, wenn die Eigenschaft geändert wird
Wie alles in Handlebars, ist der {{#each}} Helfer binding-aware. Wenn Ihre Anwendung dem Array ein neues Element hinzufügt oder ein Element entfernt, wird das DOM aktualisiert, ohne Code schreiben zu müssen.
Hier ist mein Controller
App.MaintemplateController = Ember.Controller.extend({
alist: ['foo', "bar"],
actions : {
addel: function(){
this.alist.push('xpto');
console.log(this.alist);
}
}
});
In meiner Vorlage ich den folgenden Code haben.
{{#each alist}}
<li>{{.}}</li>
{{/each}}
<button {{action 'addel'}}>Add element</button>
Die Daten richtig wiedergegeben wird, und wenn ich auf die Schaltfläche klicken, um es tut Elemente auf die Eigenschaft anhängen, aber die Vorlage nicht aktualisiert. Warum? Wie kann ich die Daten mit meinen Daten synchronisieren?
Dies beantwortet meine Frage und löst dieses Problem. Ich hatte jedoch gehofft, es gäbe eine Lösung, die unabhängig vom Datentyp funktioniert. Was mache ich, wenn ich anstelle eines einfachen Arrays ein komplexes Objekt habe und Assignment verwenden muss, um einige seiner inneren Eigenschaften zu aktualisieren? – Pico
@ Pico, froh, dass ich helfen konnte. Nun, im Falle eines komplexeren Objekts gehen Sie den Objektbaum hinunter und legen seine Eigenschaften fest: 'this.get ('complexObject.childOne.childTwo'). Set ('name', 'foo'); 'macht Sinn? – intuitivepixel
Ja, danke. – Pico