2016-03-22 2 views
0

Das Anzeigen einer Sammlung statischer bekannter Felder ist für Meteor grundlegend, wobei bekannte Feldnamen für feste Dokumentschlüssel in einer HTML-Vorlage platziert werden.Verwenden von Meteor zum Anzeigen einer Sammlung mit nicht vorher bekannten Kopfzeilen

Wenn jedoch alle Feldnamen zu dem Zeitpunkt gefunden werden, zu dem die Daten eingefügt werden, kann das grundlegende Meteor-Rendering nicht verwendet werden.

Gibt es eine Möglichkeit, alle Felder zu veröffentlichen, die von Parsing der JSON Tabellendaten gefunden werden?

Vielleicht Houston ist die Antwort?

Antwort

0

Im Grunde müssen Sie nur Schlüssel als Werte zusammen mit den tatsächlichen Werten zurückgeben. Zum Beispiel:

{{#each kvp object}} 
    key: {{key}} 
    value: {{value}} 
{{/each}} 

Mit einem Helfer:

Template.myTemplate.helpers(function(){ 
    kvp: function(obj){ 
    return Object.keys(obj).map(function(k) { return {key: k, value: obj[k] }); 
    } 
}); 

, dass ein Objekt ohne Verschachtelung annimmt.

Object.keys(obj) gibt Ihnen eine Reihe von Tasten. Die Funktion map führt dann eine Schleife über jeden dieser Schlüssel aus. In der Mapping-Funktion erstellen wir ein neues Objekt aus Schlüssel und Wert. Das Endergebnis ist ein Array von Objekten, die in Blaze überschliffen werden können.

+0

Ich bin jetzt versucht zu sehen, ob Meteor Vorlagen rekursiv verwendet werden können! –

+0

#Each wird verwendet, um horizontal zu expandieren, indem jedes Dokument in Dokumente/Objekte eines Feldes zerlegt wird, wobei ein Cursor zurückgegeben wird. Ich werde den Code veröffentlichen, wenn es funktioniert. Es scheint so, als ob viele Leute mit einem solchen Code eine neue Sammlung unbekannter Felder in den Dokumenten darstellen möchten. – user3078524

+0

Um es richtig zu machen, möchten Sie in der Lage sein, eine Hierarchie zu durchlaufen. Dies ist nur eine einfache Lösung für ein _flat_ Objekt. Auch technisch gibt es ein Array von Objekten zurück, keinen Cursor. –

Verwandte Themen