2012-12-14 7 views
0

Je viens de commencer l'intégration Backbone.js dans ma demande. J'ai une question à propos de la traversée de chaque modèle dans la collection.traversant une collection Backbone

Je veux essentiellement obtenir urls de chaque modèle de la collection et d'attacher ces urls à son modèle correspondant. Je le fais de cette façon en ce moment, et je veux juste savoir s'il y a une autre façon de le faire?

getItemsURLs: function(collection){ 

    var idsInCollection = []; 

    collection.each(function(model) { 
     idsInCollection.push(model.get('id')); 
    }); 

    makeServiceCall({ 
     data: idsInCollection, 
     success: function(data) { 
      collection.each(function(model,i) { 
       model.set({ url: data.urls[i]}); 
      }); 
     } 
    }); 
} 

Répondre

2

En utilisant pluck est plus concise: (. Comme l'a souligné asawyer, pluck est plus concis que map ou each)

var idsInCollection = collection.pluck('id'); 

+3

'collection.pluck ('id') ' – asawyer

+1

C'est génial. Je savais que j'allais sortir quelque chose de cette question. Qu'en est-il de définir un attribut, ne nous avons méthode similaire à plumer pour mettre urls? – sublime

+0

@johnknaan Pas que je sache. 'pluck' vient en fait de la bibliothèque underscore.js. – asawyer