私は、バックボーンとmarionette.jsを使用してアプリケーションを構築しています。コレクションビューを使用していくつかのアイテムを提示し、それらをフィルタリング、並べ替え、グループ化することを計画しています。Marionetteを使用してコレクションビューのアイテムをグループ化する
実際にグループ化された方法でhtmlを実際に追加するための優れたデザインアイデアがあるかどうかは疑問でした。私はいくつかのアイデアを持っていますが、誰かがより良いデザインになるかどうかを知りたいのかどうか疑問に思っていました。
最初のアイデアは、コレクションビューでappendHtmlメソッドを変更することです。グループ化が有効な場合は、appendHtml関数で子グループのビンを検索または作成し、その中に子ビューを配置できます。
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);
}
私の第二の考えは、この1つは、それはより多くの仕事であるかもしれないように思えるが、また、限りコードとして少し良いかもしれない...最初のグループにコレクションをばらばらにして、多分複数のビューをレンダリングすることです構造が関係している。
コメントや意見を引き出すのはすばらしいことでしょう。
おかげ
私はより良いあなたの最初のアプローチが好きで、それはあまりにも、おそらく簡単です。プレゼンテーションの内容はビューに表示する必要があります。コレクションを分割して別々に表示するのは奇妙です。ある時点で、リストビューがグループ化されているかどうかをボタンで切り替えると、複数のコレクションが途切れることがあります。 –
はい、それは私が一緒に行ったものです...私は少しずつ注意を払う必要があります。なぜなら、私は各グループに見出しを付けたかったからです。それは、私がそれらも追跡してください。なぜなら、Marionetteは追加/削除アイテムを追跡するのに大変な作業をしているからです。 – MattyP
グループにソートするためにコレクションに 'comparator'を追加すると助けになるのだろうかと思います。その後、追加/削除/リセットの変更がある場合は、ビュー内で、後処理のステップを行うことができます。マリネットが挿入/削除してヘッダを挿入した後、何かを行う1000の方法があると思います。 –