2016-06-22 5 views
0

Ich habe ein Modell wie diesesWie für den Zugriff auf das Modell Metadaten oder statische Daten in hbs Vorlage

var model = Model.extend({ 
    id: attr(), 
    profileName: attr(), 
    email: attr(), 
    role: attr(), 
    ... 
}); 

Und jetzt muss ich es einige Metadaten/statisches Attribut befestigen.

var model = Model.extend({ 
    id: attr(), 
    profileName: attr(), 
    email: attr(), 
    role: attr(), 
    ... 
    viewOrder: Ember.computed(function() { 
     return [get(this, 'id'), get(this, 'email'), get(this, 'role'), get(this, 'profileName'), ...]; 
    }), 
    viewColNames: Ember.computed(function() { 
     return ['Id', 'Email', 'Role', 'Username', ...]; 
    }) 
}); 

Und dann in der Ansicht Ich habe so etwas wie dies:

<tbody> 
    {{#each model as |userprofile|}} 
    <tr> 
     {{#each userprofile.viewOrder as |order|}} 
     <td>{{order}}</td> 
     {{/each}} 
    </tr> 
    {{/each}} 
</tbody> 

Welche ist nicht groß, aber es funktioniert, aber ich würde auch so etwas tun:

<thead> 
    <tr> 
    {{#each model.viewColNames as |colName|}} 
    <th>{{colName}}</th> 
    {{/each}} 
    </tr> 
</thead> 

(ich bin mir bewusst, das nicht funktioniert)

Also meine Frage ist, wie kann ich statisches Attribut des Modells in templ lesen aßen oder noch besser, setze Metadaten (viewOrder, viewColNames), um sie zu modellieren und dann in der Vorlage zu lesen, oder wenn es eine andere Möglichkeit gibt, mit dieser Situation umzugehen. dynamisch

Dank

Antwort

0

So versuchen Sie, alle Felder innerhalb Ember Datenmodell definiert zu bekommen?

Es gibt eine integrierte Hilfe, die Schlüssel innerhalb des Objektobjekts iterieren kann. Da Ember Datenmodell als auch nur Ember ist das Objekt das für sie arbeitet:

https://guides.emberjs.com/v2.6.0/templates/displaying-the-keys-in-an-object/

Es gibt auch einen Blog-Post ist wurde es ember hinzugefügt, die Informationen zu diesem Helfer umfasst:

http://emberjs.com/blog/2015/08/16/ember-2-1-beta-released.html#toc_code-each-in-code-helper

So in Ihrer Vorlage können Sie etwas tun:

<ul> 
{{#each-in model as |key value|}} 
    <li>{{key}}: {{value}}</li> 
{{/each-in}} 
</ul> 

es Hoffnung hilft

+0

Vielen Dank für die Antwort, aber nein, ich möchte benennen (Namen nicht unbedingt Schlüssel übereinstimmen) und alle Felder im Modell zu sortieren, damit ich eine Tabelle mit Namen in Tabellenkopf und Spalten in angeordnet erstellen kann definierte Reihenfolge. – DeJus

+0

Wie wäre es mit dem Erstellen einer Eigenschaft viewColNames, aber anstelle von fest codierten Werten würden Sie jedes mit jedem Attribut für ein bestimmtes Modell tun? http://emberjs.com/api/data/classes/DS.Model.html#method_eachAttribute Aber warum nicht ein benutzerdefiniertes Feld in Ihrem Modell, in dem Sie JSON-Objekt speichern, das Spalten definiert, die Sie in Ihrer Vorlage anzeigen möchten. Also würde Ihr Server eine Liste von Spalten, die Sie anzeigen möchten, zurückgeben, und Sie können ein Feld für die Ansichtsreihenfolge haben und das Element 'Array' sortieren. Ich kann ein Beispiel verwerfen, aber sollte wie in Ihrem Beispiel geradlinig sein, kommt aber von einem Feld innerhalb des Modells –

Verwandte Themen