2011-11-21 19 views
10

En this stackoverflow post he leído sobre el filtrado de colecciones de redes troncales y el uso de subconjuntos.Implementando Backbone.Subset.js en Backbone.js para filtrar Modelos de una Colección primaria

Una respuesta (en trineo) recomienda el uso de backbone.subset.js (usage example).

No pude encontrar más recursos en backbone.subset.js y no pude implementarlo en mi proyecto.

Parece que backbone.subset.js es la solución perfecta para lo que estoy tratando de lograr.

(Tener una colección de "padre" que mantiene todos los modelos en todo momento, y en función de la entrada del usuario filtrar los modelos relevantes de la colección de los padres en una colección backbone.subset.)

Mi colección "padre", manteniendo todas las tareas:

var TasksAll = Backbone.Collection.extend({ 
    url: '/tasks', // the REST url to retrieve collection data 
    model: Task // the models of which the collection consists of 
}); 
var allTasks = new TasksAll(); 

Ahora quiero crear una colección de subconjuntos, por ejemplo tareas en las que task.status = 0:

var TasksTrash = new Backbone.Subset({ 
    superset: allTasks, 
    filter: function(Task) { 
     return Task.isTrash(); 
    } 
}); 
var trashTasks = new TasksTrash(); 

Mientras que dentro del modelo de tareas, el método "isTrash" devuelve verdadero si:

this.get('status') == 0 

a) ¿Hay más recursos en backbone.subset.js ?

b) ¿Cómo implemento el escenario anterior?

c) ¿Puedo pasar las opciones 'superconjunto' y 'filtro' como parámetros a la función Backbone.Subset init?

d) Miré en el código backbone.subset.js, cuando 'reinicie' mi colección principal Mi subconjunto Las colecciones deberían actualizarse de inmediato, ¿no?

PD: Soy bastante nuevo en Backbone. Gracias por tu ayuda.

+1

https://github.com/masylum/Backbone.Subset esta versión se ve más actualizada que su versión pastie. (Soy nuevo en la red troncal también, por lo que no puedo responder sus otras preguntas) – number5

Respuesta

2

En cuanto a la fuente de la columna vertebral-subconjunto, parece que hay un gancho pre-inicialización que se podría utilizar con el fin de hacer que el 'criba' o filtro disponible como una opción o argumento:

https://github.com/masylum/Backbone.Subset/blob/master/backbone.subset.js#L50

en cuanto a la prestación de los padres como un argumento, no es un parche excepcional añadir esa funcionalidad exacta:

https://github.com/masylum/Backbone.Subset/pull/5

con ella, se puede pasar de padres como una opción, si no es una opción, la biblioteca recurrirá a buscarlo en el objeto Prototipo

Cuestiones relacionadas