Ich baue eine Anwendung mit Backbone und marionette.js. Ich beabsichtige, eine Sammlungsansicht zu verwenden, um einige Elemente darzustellen und dann zu erlauben, dass sie gefiltert, sortiert und gruppiert werden.Verwenden von Marionette zum Gruppieren von Objekten in einer Sammlungsansicht
Ich frage mich, ob es gute Design-Ideen für die tatsächliche Anhängen der HTML in einer gruppierten Mode gibt. Ich habe ein paar Ideen, aber ich habe mich gefragt, ob jemand etwas einbringen könnte, um besser zu entwerfen.
Meine erste Idee ist es, die AppendHtml-Methode für die Sammlungsansicht zu ändern, und wenn die Gruppierung aktiviert ist, kann ich die AppendHtml-Funktion entweder suchen oder erstellen die Bin der untergeordneten Gruppe und legen Sie die untergeordnete Ansicht darin.
appendHtml: function(collectionView, itemView, index){
var $container = this.getItemViewContainer(collectionView);
// get group from model
var groupName = itemView.model.get("group");
// try to find group in child container
var groupContainer = $container.find("." + groupName);
if(groupContainer.length === 0){
// create group container
var groupContainer = $('<div class="' + groupName + '">')
$container.append(groupContainer);
}
// Append the childview to the group
groupContainer.append(itemView);
}
Meine zweite Idee ist es, die Sammlung in Gruppen auseinander zu brechen und dann vielleicht mehrere Ansichten machen ... Dies scheint wie könnte es mehr Arbeit, aber vielleicht auch etwas besser sein, so weit wie der Code Struktur betrifft.
Alle Vorschläge oder Gedanken, die Kommentare auslösen, wären großartig!
Dank
Ich mag Ihren ersten Ansatz besser, und es ist wahrscheinlich zu erleichtern. Präsentationsmaterial sollte in der Ansicht sein, und es erscheint seltsam, eine Sammlung aufzuteilen, nur um sie anders darzustellen. Irgendwann möchten Sie vielleicht eine Schaltfläche, um zu ändern, ob die Listenansicht gruppiert ist, und dann könnten mehrere Sammlungen in die Quere kommen. –
Ja, das ist die, mit der ich ging ... Ich muss aber auf diese Weise ein wenig vorsichtiger sein ... weil ich jeder Gruppe Überschriften hinzufügen wollte ... was dann bedeutet, dass ich sicherstellen muss, dass ich Behalten Sie diese auch im Auge. Was unglücklich ist, weil Marionette eine großartige Arbeit leistet, um die Hinzufügung/Entfernung von Gegenständen zu überwachen. – MattyP
Ich frage mich, ob es hilfreich wäre, wenn Sie Ihrer Sammlung einen 'Komparator' hinzufügen, der nach Gruppe sortiert ist. Dann, wenn es eine Änderung hinzufügen/entfernen/zurücksetzen, in der Ansicht können Sie eine Art von Post-Processing-Schritt, nachdem Marionette das Einfügen/Entfernen, um die Header einfügen ... Ich denke, es gibt 1000 Möglichkeiten, etwas zu tun. –