2012-06-21 8 views
6

Sto appena entrando in backbone.js e ho pensato che il modo migliore per entrare in esso è quello di costruire effettivamente una lista di cose da fare (sì ... piuttosto originale). A parte l'umorismo, ho cercato google e i documenti e lo stackoverflow, ovviamente, per un modo di aggiungere un attributo a una raccolta. Quindi, nel mio caso una lista di cose da fare è una raccolta di listini. Comunque una Todo List può avere un titolo come secondo il mio design, voglio essere in grado di creare più liste.Puoi impostare gli attributi sulle raccolte Backbone.js? Se é cosi, come?

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

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

Grazie mille per l'aiuto! Apprezzalo!

risposta

11

Sì, è possibile. Guardate la firma del Collection costruttore:

nuova Collezione ([modelli], [opzioni])

Così si potrebbe scrivere in questo modo:

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

grazie mille per la Aiuto! Questa era la risposta :) –

+6

Prego. Ma ho pensato un po 'di più, e ora penso che la mia risposta non è ciò che stai cercando :). Suppongo che tu voglia essere in grado di aggiungere ascoltatori all'evento change e che tu possa fare con gli attributi 'Models'. Ma con l'approccio sopra menzionato non puoi farlo. Perché non c'è nulla di speciale in queste proprietà 'Collection': sono solo proprietà dell'oggetto e Backbone non lo usa in alcun modo. Quindi penso che sarebbe meglio creare un altro modello contenente il tuo 'TodoList'. Darò un esempio un po 'più tardi. Scusa se ti confondo. – theotheo

+0

ansioso di vedere l'esempio :) –

Problemi correlati