Pergunta

Eu tenho uma coleção chamada de backbone users, com cada user tem um único name e não exclusivo page.Eu gostaria de classificar este users coleção por página, mas a Espinha dorsal do comparator está dando os mesmos resultados quando não comparator é declarado.

Vamos dizer que eu tenho uma coleção de usuários assim (adicionados de um por um, de cima para baixo):

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

Se eu fizer

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

Em seguida, a classificação está como o esperado (por name):

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

No entanto, se eu tentar a classificação por page:

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

Em seguida, a coleção não classificar corretamente (página 1 é sempre no final):

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

Por que isso acontece e como posso classificar corretamente por page?

EDITAR

Isso também não funciona com o simples versão da cadeia de page:

comparator: (u) ->
  u.get("page")
Foi útil?

Solução 2

Depois de muito cavar, parece que a coleção foi, na verdade, de ordenação, não era apenas fazer uma completa re-renderizar depois de cada novo fetch({remove: false}).Eu adicionei um ouvinte para o CompositeView assim:

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

E ele está obedecendo o comparador de como esperado agora.Eu ainda não tenho idéia de por que isso foi não também um problema ao ordenar por name embora.

Outras dicas

Você já tentou apenas isto :

comparator: "page"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top