2012-06-21 19 views
6

Acabo de entrar en backbone.js y pensé que la mejor manera de entrar en ello es compilar una lista de cosas pendientes (sí ... bastante original). Dejando de lado el humor, he buscado en google y en los documentos y stackoverflow, por supuesto, una forma de agregar un atributo a una colección. Entonces, en mi caso, una lista de tareas pendientes es una colección de elementos de lista. Sin embargo, una Lista de Todo puede tener un título según mi diseño, quiero poder crear múltiples listas.¿Puede establecer atributos en Colecciones Backbone.js? ¿Si es así, cómo?

var TodoList = Backbone.Collection.extend({ 
    model: ListItem 
}); 

//is this possible for collections? 
var newTodoList = new TodoList({name: "My first list"}); 

¡Muchas gracias por la ayuda! ¡Lo aprecio!

Respuesta

11

Sí, es posible. Mira a la firma del Collection constructor:

nueva Colección ([modelos], [opciones])

Así se podría escribir así:

var ListItem = Backbone.Model.extend({}); 
var TodoList = Backbone.Collection.extend({ 
    model: ListItem, 
    initialize: function(models, options) { 
     options || (options = {}); 
     if (options.title) { 
      this.title = options.title; 
     }; 
    } 
}) 

var iPromise = new TodoList([], { 
    title: 'NY Resolutions' 
}) 

console.log(iPromise.title); 
+0

muchas gracias por la ¡ayuda! Esa fue la respuesta :) –

+6

De nada. Pero pensé un poco más, y ahora creo que mi respuesta no es lo que estás buscando :). Supongo que desea poder agregar oyentes al evento de cambio, así como también puede hacerlo con los atributos de 'Modelos'. Pero con el enfoque mencionado anteriormente no puedes hacerlo. Porque no hay nada especial acerca de estas propiedades de 'Collection', solo son propiedades de objetos y Backbone no lo usa de ninguna manera. Por lo tanto, creo que sería mejor crear un nuevo modelo que contenga su 'Lista de Todo'. Daré un ejemplo un poco más tarde. Perdón si te confundo. – theotheo

+0

interesado en ver el ejemplo :) –

Cuestiones relacionadas