質問

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"
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top