Question Backbone.js: vues complexes combinant plusieurs modèles


Jusqu'à présent, tous les tests et les tutoriels que j'ai essayés pour obtenir la structure dans ma tête me montrent qu'une vue est liée à 1 modèle.

disons que j'ai une petite application pour stocker et gérer les coordonnées (un carnet d'adresses) J'ai plusieurs utilisateurs qui peuvent se connecter et ils ont chacun leur propre collection de contacts.

la vue de détail de l'utilisateur serait liée au modèle d'utilisateur même chose pour les contacts

mais disons que je voudrais montrer une grille combinant ces deux Axe X montrant tous les contacts dans l'application Axe Y montrant tous les utilisateurs,

Comment cela marche-t-il? Dois-je créer un nouveau modèle pour cela, pour créer une nouvelle vue?

vous obtenez l'idée, c'est juste un exemple théorique que je ne construis pas cette application, mais son pour avoir l'idée d'avoir une vue combinant plusieurs modèles


31
2017-09-12 09:15


origine


Réponses:


Dans ce cas, je considère un modèle dynamique avec vos deux sous-modèles. Dans votre gestionnaire de route, vous pouvez faire quelque chose comme ceci:

var model = new Backbone.Model();
model.set({contacts: new ContactsModel(), users: new UsersModel()});
var view = new GridView({model: model});

Bien sûr, rien ne vous empêche de transmettre les modèles séparément:

var contacts = new ContactsModel();
var users = new UsersModel();
var view = new GridView({model: contacts, users: users})

Je préfère encore l’approche composite du premier parce qu’elle ne confond pas le modèle.


50
2017-09-12 10:11



Vous pouvez également envisager de fusionner les deux modèles si vous êtes certain qu'ils n'utilisent pas les mêmes paramètres.

var modelA = new myModel({ color: "blue" });
var modelB = new otherModel({ age: 35 });

var superModel = new Backbone.Model();
superModel.set(modelA);
superModel.set(modelB);

console.log("color:", superModel.get("color"));
console.log("age:", superModel.get("age"));

jeter un coup d'œil à Backbone.Model.extend() ainsi que


7
2017-07-11 13:14