Wenn Sie den Code ausführen Snippet Sie Sie wahrscheinlich ein Fehler auftritt Error while processing route: index Unclosed element tr (on line 8). Error: Unclosed element tr (on line 8).
angibt Dies liegt daran, ember-template-compiler
nicht weiß, wird zur Verfügung gestellt haben, ob die Wiedergabe in einer korrekten HTML
Seite als Ergebnis der Rendering führen. Was ist, wenn das Array items
nicht durch 3 teilbar ist? wir werden einen Fehler in der Laufzeit bekommen. Um das zu verhindern; ember-template-compiler
gibt einen Fehler aus, der auf ein nicht geschlossenes tr
-Tag hinweist.
Also; Was kann getan werden, um dies zu verhindern? Sie können eine berechnete Eigenschaft in Ihrem js Datei erstellen, die die Anzahl der Zeilen gibt einfach gewünscht, wie folgt:
rowCount: Ember.computed('items.length', function() {
return this.get('items.length')/3;
})
danach können Sie einfach durch ember-composable-helpers Verwendung von range
Helfer zur Verfügung gestellt machen und die folgenden in Ihrer Vorlage tun:
<table>
{{#each (range 0 rowCount) as |rowIndex|}}
<tr>
{{#each (range 0 3) as |columnIndex|}}
{{! `number` will go from 0 to 2}}
<td>
{{get (get-item-at-array-index items columnIndex rowIndex) 'id'}}
</td>
{{/each}}
</tr>
{{/each}}
</table>
der oben angegebene Template-Code-snippet enthält einen Helfer get-item-at-array-index
benannt, die einfach an der gewünschten Indexposition die betreffende Position findet und es soll einen einfachen Code hat wie folgt:
export function getItemAtArrayIndex(params/*, hash*/) {
let array = params[0];
let index = params[1];
let rowIndex = params[2];
return array[index+rowIndex*3];
}
Ich habe folgendes twiddle für Sie vorbereitet, dass bis Wraps, was ich bereits oben erläutert. Auf diese Weise; Sie werden den Unclosed element tr
Fehler vermeiden, den Sie bekommen; da die Tags explizit geschlossen werden und der Vorlagencompiler sich nicht beschweren wird.
Danke, zwei Schleifen mit dem Bereich Helfer haben es geschafft! – user6041966