我正在使用backbone和marionette.js构建应用程序。我打算使用集合视图呈现一些项目,然后允许对它们进行过滤,排序和分组。使用Marionette将集合视图中的项目分组
我想知道是否有任何好的设计思想实际追加在分组的方式的HTML。我有一些想法,但我想知道如果有人可能会有更好的设计投入。
我的第一个想法是更改集合视图中的appendHtml方法,如果启用了分组,则可以使用appendHtml函数查找或创建子组的bin并将子视图放入其中。
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);
}
我的第二个想法是掰开收集到第一,然后也许渲染多个视图组...这一个看起来可能是更多的工作,但也可能会好一点,只要代码结构而言。
任何建议或思想引出的评论将是伟大的!
感谢
我喜欢你的第一种方法更好,它可能是更容易了。演示文稿应该在视图中,分割一个集合以显示不同的内容似乎很奇怪。在某些时候,您可能想要一个按钮来切换列表视图是否被分组,然后多个集合可能会阻碍。 – 2013-02-13 00:09:54
是的,那是我和我一起去的......我确实需要更小心一些,因为我想为每个组添加标题......这意味着我需要确保我跟踪这些。这是不幸的,因为木偶在跟踪添加/删除项目方面做得非常出色,无需太多额外的... – MattyP 2013-02-13 03:41:58
我想知道,如果您添加一个“比较器”到您的收藏集以便按组排序,这是否会有所帮助。然后,当有任何添加/删除/重置更改,在视图中,你可以做一个后处理步骤,在木偶做插入/删除,插入标题...我想有1000种方法可以做任何事情。 – 2013-02-13 03:48:47