【问题标题】:Sortable, filterable, user list in backbone marionette?骨干木偶中的可排序,可过滤的用户列表?
【发布时间】:2013-10-07 03:13:51
【问题描述】:

看看这个过滤后的列表是多么的漂亮和优雅:

http://kilianvalkhof.com/uploads/listfilter/#/united-kingdom/

看起来很简单。只需要一个简单的无序列表和一点 JQuery。小菜一碟吧?你如何用骨干木偶的收藏来做到这一点?

我有一个木偶聊天应用程序,并且希望我的用户列表具有这样的外观和功能。但是当我说:

     var view = new UserListView({
                    collection: collConUsers
                });

     App.userListRegion.show(view);

我的 html 输出中没有简单的无序列表。无论我在项目和集合视图中尝试使用 tagName 或 el 组合,我似乎都无法实现。相反,我从我的 CollectionView 中得到这样的输出:

    <div id="divusers">
        <div>
            <div>
                <li id="1">Rob Jones</li>
                <li></li>
            </div>
            <div>
                <li id="2">Steve Smith</li>
                <li></li>
            </div>
        </div>
    </div>

包装每个 li 的 div 和一个额外的 li 用于引导集合中的每个用户。

我知道主干希望每个视图都有自己的元素。但是如果我不能产生一个简单的无序列表,我该如何产生上面的效果:

      <ul id="users">
            <li id="1">Rob Jones</a></li>
            <li id="2">Steve Smith</li>
      </ul>

我不能从我的项目视图和集合视图中创建一个这样的列表吗?

环顾四周,我看到人们抱怨多余的 div 和 li。环顾四周,我还发现过滤和排序主干集合似乎是一场噩梦。他们有很多帖子。我在以下位置看到了 Derek Bailey 的集合级别过滤提案:

https://github.com/marionettejs/backbone.marionette/issues/183

http://jsfiddle.net/derickbailey/7tvzF/

我已经有几个小时了,但仍然无法使其与我的用户列表一起使用。即使我这样做了,您似乎也必须输入整个名称并完全离开输入字段才能获得任何过滤操作。我喜欢顶部链接的结果。一次击键更流畅,更有用。而且似乎没有多少代码。我只是没有思考如何在骨干木偶中实现它。我必须缺少一些简单的东西。有人可以在这里建议方向吗?

【问题讨论】:

    标签: jquery list sorting filter marionette


    【解决方案1】:

    这里有一些信息可以帮助您解决问题:

    然后,您想在输入框的“更改”事件上过滤集合(例如)。 Marionette 将负责重新显示过滤后的模型。 (另请参阅本书中开发的应用程序中的https://github.com/davidsulc/marionette-gentle-introduction/blob/master/assets/js/apps/contacts/list/list_controller.js#L38,并附有一个现场示例here。)

    【讨论】:

    • 谢谢。正在仔细审查。看起来非常好的信息。在比较器上,我确实有一个,它似乎可以很好地对集合进行排序,但它没有与 UI 同步。添加新模型时,UI 不知道排序的性质。看起来我必须将某种手动插入 UI 到正确的位置。尚未确定。让我回顾一下这一切,看看我的立场。一会儿回来。
    • 你需要为监听器上的“add”事件添加监听器。在其中,您需要手动触发“重置”事件(使用 this.trigger("reset")),该事件将在 UI 中使用集合
    • 哇。这很深。到目前为止,有些事情正在发挥作用。比较器正在排序。 tagName、itemViewContainer等已经生成了我想要的简单无序列表。虽然被困在这里 - github.com/marionettejs/backbone.marionette/issues/640。添加时模型在列表中渲染两次。不知道为什么。我只是在排序后重置,而不是渲染。如果我注释掉我的添加处理程序的“collection.trigger('reset')”,我会得到正确的渲染,但当然没有。 Derick Bailey 几个月前打开了这个问题,我认为还没有解决办法。在我继续之前必须解决这个问题。
    • 在添加时打开了关于 CompositeView 重复模型渲染的单独问题。这里有足够的工作可以继续并将这个问题标记为已回答。任何陷入重复模型渲染问题的人都可以转至stackoverflow.com/questions/19142492/…。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多