backbone.jsコレクションコンパレータ番号でソートされていません
-
21-12-2019 - |
質問
users
というバックボーンコレクションを持ち、各user
は独自のname
と独自の一般的なpage
を持ちます。このusers
コレクションをページごとに並べ替えたいが、Backboneのcomparator
は、comparator
が宣言されていない場合と同じ結果を与えています。
私はそうのようなユーザーのコレクションを持っているとしましょう(1つから下へ、上から下へと追加):
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()
.
で、今予想されるようにコンパレータに従います。私はまだこれがではなくではなくも登場したときの問題もありません。
他のヒント
これだけを試してみましたか:
comparator: "page"
. 所属していません StackOverflow