骨干。js集合比较器不按数字排序
-
21-12-2019 - |
题
我有一个名为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"
不隶属于 StackOverflow