2017-02-25 4 views
2

https://svelte.technology/guide#each-blocks gibt ein Beispiel für jede Blöcke zur Ausgabe einer tabellenartige Struktur:Jede Blöcke für beliebige verschachtelte Arrays

<div class='grid'> 
    {{#each rows as row, y}} 
    <div class='row'> 
     {{#each columns as column, x}} 
     <code class='cell'> 
      {{x + 1}},{{y + 1}}: 
      <strong>{{row[column]}}</strong> 
     </code> 
     {{/each}} 
    </div> 
    {{/each}} 
</div> 

Das Beispiel erfordert diese besondere Struktur:

{ 
    "columns": [ 
    "foo", 
    "bar", 
    "baz" 
    ], 
    "rows": [ 
    { 
     "foo": "a", 
     "bar": "b", 
     "baz": "c" 
    }, 
    { 
     "foo": "d", 
     "bar": "e", 
     "baz": "f" 
    }, 
    { 
     "foo": "g", 
     "bar": "h", 
     "baz": "i" 
    } 
    ] 
} 

Gibt es eine Möglichkeit zu Verwenden Sie diese Funktion, wenn die Spalten nicht vorher bekannt sind, oder noch allgemeiner, wenn jede Zeile eine andere Länge haben könnte? Z.B. (Für letztere):

{ 
    "rows": [ 
    [1], 
    [2, 3, 4], 
    [5, 6] 
    ] 
} 

Ich sehe nicht überall eine Syntax für #each angibt, dass eine Komponente der Daten vor Iterieren „in Reichweite“ kann, wie es war.

Fehle ich etwas oder ist die innere Schleife von diesem unmöglich mit #each? Wenn es unmöglich ist, was sind andere Möglichkeiten, es zu tun? (ZB können Sie eine Funktion verwenden, um über die inneren Arrays zu iterieren und eine sekundäre Vorlage zu verschachteln?)

Antwort

2

Ich lerne gerade von der Dokumentation hier, aber was ich Ihnen sagen kann, sollte in der Lage sein, row als behandeln Liste der cell s:

<div class='grid'> 
    {{#each rows as row, y}} 
    <div class='row'> 
     {{#each row as cell, x}} 
     <code class='cell'> 
      {{x + 1}},{{y + 1}}: 
      <strong>{{cell}}</strong> 
     </code> 
     {{/each}} 
    </div> 
    {{/each}} 
</div> 
+0

der Tat! Siehe in Aktion unter https://svelte.technology/repl/?version=1.6.11&gist=d752ea8039f82f70ff490a87b90ab318. Ich bin mir nicht sicher, wo Sie das in den Dokumenten gefunden haben, können Sie mich darauf hinweisen? Der Abschnitt, mit dem ich verlinkt habe, hat nicht viel Detail, also die Tatsache, dass Sie entweder etwas aus Ihrem Daten-Array oder etwas aus dem aktuellen Kontext verwenden können, ohne das anzugeben, ist ein bisschen ... magic-y. :) – Kev

+1

Ich habe diesen spezifischen Text nicht wirklich aus den Dokumenten gezogen; Ich habe nur gefolgert, dass '#jede Liste als Gegenstand' eine Variable' Gegenstand' erzeugen könnte und von meinem Wissen in anderen Sprachen hoffte ich, dass dieser 'Gegenstand' auch iteriert werden konnte. Mit "Lernen von der Dokumentation" meinte ich, dass ich vorher keine Erfahrung mit Svelte hatte, bevor ich versuchte, diese Frage zu beantworten ... nur um Sie wissen zu lassen, falls ich einen Anfängerfehler machte. Aber ich bin froh, dass der Rat geholfen hat! :) – gyre

Verwandte Themen