我有一个名为backbone集合 users, ,与每 user 拥有独一无二的 name 和非唯一 page.我想对此进行排序 users 按页收集,但骨干的 comparator 给出的结果和没有的时候一样吗? comparator 被宣布。

比方说,我有一个像这样的用户集合(一个接一个地添加,从上到下):

name: B, page: 1
name: D, page: 2
name: A, page: 3
name: C, page: 4

如果我这样做

class Entities.Users extends Backbone.Collection
  ...
  comparator: (u) ->
    u.get("name").toUpperCase()

然后排序如预期的那样(由 name):

name: A, page: 3
name: B, page: 1
name: C, page: 4
name: D, page: 2

但是,如果我尝试通过排序 page:

comparator: (u) ->
  parseInt u.get("page")

然后集合没有正确排序(第1页总是在最后):

name: D, page: 2
name: A, page: 3
name: C, page: 4
name: B, page: 1

为什么会发生这种情况,以及我如何通过正确排序 page?

编辑

这也不适用于 page:

comparator: (u) ->
  u.get("page")
有帮助吗?

解决方案 2

经过大量的挖掘,看起来集合实际上是在排序,它只是没有在每个新的之后做一个完整的重新渲染 fetch({remove: false}).我向CompositeView添加了一个侦听器,如下所示:

class MyClass extends Marionette.CompositeView
  ...
  initialize: ->
    @collection.on "sync", () => @render()

它现在正像预期的那样服从比较国。我还是不知道为什么会这样 不是 也是一个问题时,通过排序 name 不过。

其他提示

你只试过这个吗? :

comparator: "page"
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top