Ich habe ein Array von Tracks aus einer Datenbank, die ich in einem div anzeigen möchte. Genauer gesagt muss ich alle zwei von ihnen in eine Bootstrap-Zeile setzen. Ich kann es leicht in der Controller-JS-Datei tun, indem ich zuerst alle in einem Fragmentelement sammle und dann eine Schleife benutze, um sie in die Zeilen und dann in das Zieldiv zu bringen, aber ich frage mich, ob es direkt während der Produktion möglich wäre sie im Lenker? Hier ist die Vorlage Lenker:Loops im Lenker
{{#if result}}
{{#each result}}
<div class="playlist-item col-xs-4">
<a href="#/user/{{username}}/playlist/{{id}}" class="no-style">
<h3 class="result-title">{{title}}</h3>
<p class="result-description">{{description}}</p>
<img class="result-image img-circle" src="{{img}}">
</a>
<br>
<a type="button" id="{{id.videoId}}" class="btn btn-default btn-remove"
href="#/user/{{username}}/playlist/{{id}}/remove-from-playlist">Remove from
playlist</a>
</div>
{{/each}}
{{else}}
<h4>You currently have no tracks in your playlist</h4>
{{/if}}
Hier ist die JS:
showPlaylist() {
return Promise.all([
userController.loadPlaylist(),
templates.loadTemplate('playlist'),
])
.then(([tracks, template]) => {
let fragment = document.createDocumentFragment()
let div = document.createElement('DIV');
div.innerHTML = template(tracks);
div = [...div.children];
let len = div.length
while(div.length > 0) {
let row = document.createElement('div')
row.className = 'row'
let col = div.splice(0,2)
row.append(col[0])
if(col[1]) {
row.append(col[1])
}
len -= 2;
fragment.append(row)
}
$('#container').html(fragment)
})
}
Großartig! Es ist eine viel elegantere Lösung als ich dachte. Danke für Ihre Hilfe! – Didexe