Existe-t-il un moyen de cloner facilement Backbone Collection? Je me demande pourquoi il n'y a pas de méthode intégrée comme pour les modèles. Mon problème est que j'ai un mannequin tenant une collection d'enfants. Quand je clone le modèle. J'ai toujours la collection d'enfants mais seulement avec leurs valeurs par défaut.
Quel est votre cas d'utilisation pour cloner la collection?
Il n'y a pas de fonction de clonage intégrée pour une collection car vous ne voulez pas cloner les modèles au sein de la collection. Le clonage d'un modèle entraînerait l'existence de deux instances distinctes du même modèle et si vous mettez à jour un modèle, l'autre ne sera pas mis à jour.
Si vous souhaitez créer une nouvelle collection en fonction de certains critères, vous pouvez utiliser la méthode de filtrage de la collection.
var freshmenModels = studentsCollection.filter(function(student) {
return student.get('Year') === 'Freshman';
}
var freshmenCollection = new Backbone.Collection(freshmenModels);
Pour continuer et cloner les modèles de la collection, vous pouvez écrire le code suivant
var clonedCollection = new Backbone.Collection();
studentsCollection.each(function(studentModel) {
clonedCollection.add(new Backbone.Model(studentModel.toJSON()));
});
Manière la plus simple:
var cloned = new Backbone.Collection(original.toJSON());
où original
est la collection à cloner.
Pourrait toujours étendre Collection
de Backbone pour ajouter la prise en charge du clone sans prise en charge de l'héritage.
Utilisez la méthode Backbone Collection clone () :
var clonedCollection = myCollection.clone();
Une autre option, si vous avez besoin des éléments suivants (c'est ce que je cherchais lorsque j'ai trouvé cette question;)):
Code:
var models = original.map(function (model) { return model.clone(); });
var options = _.clone(original.options);
var copy = new original.constructor(models, options);
Une méthode de clonage générique sur Backbone.Collection serait maladroite car il y aura toujours des subtilités pour savoir si les modèles et leurs objets imbriqués sont copiés par référence ou s'ils sont eux-mêmes clonés. Les exigences varieront énormément selon votre scénario, il vous a donc été laissé d'écrire ce dont vous avez besoin.