Ich versuche, eine Bindung an die Eigenschaft des Controllers zu machen, aber der Eigenschaftsname wird selbst als eine andere Eigenschaft des Controllers gespeichert. Ich muss an eine Eigenschaft binden, ohne den Eigenschaftsnamen zur Entwurfszeit zu kennen. Ist das möglich? Oder was ist der bessere Weg, Dinge zu tun?Wie man Lenker an willkürliche Eigenschaft bindet?
Ich mache eine Ansicht, die den Inhalt einer ArrayController
als Tabelle anzeigt. Die ArrayController
hat eine Liste eine Eigenschaft Namen, die angezeigt werden soll (columnsMeta
). In der Vorlage schaue ich durch alle Elemente in der Steuerung, dann durchlaufen Sie alle Spalten und möchten und den Spaltenwert binden. den Eigenschaftswert zu erhalten
Ein Versuch ist ein Lenker Helfer zu machen:
Ember.Handlebars.registerBoundHelper('getProperty', function(property, obj) {
return obj.get(property);
});
und dann in der Vorlage, den Eigenschaftsnamen und Objekt an den Helfer übergeben:
{{#each row in controller}}
<tr>
{{#each col in columnsMeta}}
<td>{{getProperty col.property row}}</td>
{{/each}}
</tr>
{{/each}}
Diese Ausgänge Der richtige Text in der Tabelle und jeder Textabschnitt wird mit metamorph
Tags umgeben, aber wenn ich die Werte der Eigenschaften der Modelle ändere, wird die Vorlage nicht aktualisiert, sie scheint nicht gebunden zu sein.
Diese Notationen auch nicht funktionieren:
{{row.[col.property]}}
{{row.[(col.property)]}}
Das Eigentum unter dem Namen „col.property“ nicht existiert und nichts gedruckt wird.
Ich sehe, dass die glut-Tabelle Projekt verwendet contentDidChange
und erstellt eine berechnete Eigenschaft in der Ansicht, welche die Vorlage, um die Zellinhalte zu füttern. Table Cell View in ember-table
Aber ist das wirklich notwendig? Gibt es weniger schwere Wege? Habe ich nur meine Syntax falsch?
danke!
Haben Sie den Helfer debuggt? – Kingpin2k
Worauf würde ich beim Debuggen des Helfers achten? Es wird der korrekte Name der Eigenschaft als String übergeben, zB: "id" oder "title", und das obj wird auf das Modell gesetzt. Scheint so zu funktionieren, wie ich es erwarten würde, die Metamorph-Tags sind da ... es wird einfach nicht aktualisiert, wenn Modelle geändert werden. – Noland
Sorry, total vermisst den nicht aktualisierenden Teil, lesen Sie es zu früh am Morgen. Gebundene Helfer sehen die Eigenschaften, die in sie gesendet werden. Der gebundene Helfer nimmt eine dynamische Eigenschaft von einer der gesendeten Eigenschaften ab. Der gebundene Helfer beobachtet zwei Dinge, die Objektreferenz selbst und den Eigenschaftsnamen. Da sie sich nicht ändern, weiß sie nicht zu aktualisieren. – Kingpin2k