Épine dorsale de la Collection avec plusieurs modèles?
Je suis épine Dorsale de l'apprentissage.
Je veux créer une liste qui peut contenir différents modèles, avec des attributs différents.
Par exemple, la liste du contenu du dossier, ce qui pourrait inclure des modèles de type de fichier et les modèles de type dossier, dans n'importe quel ordre.
file : {
title : "",
date : "",
type : "",
yaddayadda : ""
}
folder : {
title : "",
date : "",
haminahamina : ""
}
Quelle est la bonne façon de représenter cette colonne vertébrale? Est-il possible d'avoir une Collection unique avec plusieurs modèles?
Dupliquer: stackoverflow.com/questions/6933524/...
OriginalL'auteur user1031947 | 2013-01-10
Vous devez vous connecter pour publier un commentaire.
Créer un modèle de base que les autres modèles héritent de:
Et de faire de la
model
type de la collection sera le même modèle de base:Vous pouvez toujours vérifier si
obj instanceof FileModel
(ouFolderModel
) et de rendre de façon appropriée.C'est comment j'allais le faire, mais comment êtes-vous en passant dans les Données que vous parlez de (appel AJAX)? Si c'est le cas, vous devrez vérifier si cette propriété unique existe sur la réponse (c'est à dire, si (someModel.someUniqueProperty) { // la rendre avec la vue qui va gérer que la valeur de la propriété};).
OriginalL'auteur Lukas
Vous pouvez également faire de l'épine dorsale. Découvrez les docs épine dorsale de la collection
Fondamentalement, vous pouvez créer différents modèles l'ajout d'un bris d'égalité attribut dire "type" dans ce cas.
var fs = Backbone.Collection.extend({
C'est une approche très pratique, merci
Veuillez noter que cela casse
this.model.prototype.idAttribute
, de sorte que vous devriez jeter un oeil à Maciej répondre qui permet de résoudre ce avecModelFactory.prototype.idAttribute
.Ou tout simplement remplacer la collection
modelId
fonction pour éviter les doublons.OriginalL'auteur Ssekirime Geofrey
Épine dorsale documention n'est pas terminée dans ce cas. Il ne fonctionne pas lorsqu'il est utilisé avec
merge:true
option etidAttribute
. Dans ce cas, vous devez:ModelFactory.prototype.idAttribute
est vraiment important ici, car il évite les doublons.Substitution de la collection
modelId
fonction serait l'équivalent.OriginalL'auteur Maciej Dzikowicki
OriginalL'auteur zloctb