2012-09-03 2 views
1

Je veux créer un formulaire complexe avec Backbone.Marionette. Je pense que la forme devrait ressembler à ceci:Créer une vue complexe (formulaire) avec Marionette

Form

Tout changement sur les produits ou les paiements devraient affecter le modèle de « vente ». La structure du modèle est:

sale : { 
    date  :    '10/01/2010', 
    customer :    'Jaime Rivera' 
    products :    [{product_name:'ZZZZZZ', price: 100, quantity: 2}, 
           {product_name:'yyyyyy', price: 33, quantity: 1}], 
    payments :    [{type:'check', other_data: '', amount: 160}, 
           {type:'credit-card', other_data: '', amount: 73}] 
} 

J'aimerais connaître la meilleure façon de structurer les vues pour créer le formulaire. Je ne suis pas sûr si je devrais utiliser la disposition, compositeview ou collectionview.

Répondre

4

Il y a plusieurs façons de faire ce travail avec les vues de Marionette, et aucune d'elles n'est nécessairement bonne ou mauvaise. Certains fonctionneront mieux pour vos autres contraintes, comme les données qui doivent être utilisées pour le rendre, les événements à gérer, etc.

Étant donné les données que vous avez affichées, elles ressemblent à une mise en page avec deux CompositeViews.

La mise en page rendrait le sélecteur de date, la zone de saisie et deux divs vides pour les produits et les paiements. Chacune de ces divs vides aurait une définition de région associée dans la mise en page, de sorte que vous pouvez afficher les produits et les paiements.

Vous pourriez alors avoir un CompositeView pour les produits - un modèle qui rend la liste des produits et le bouton Ajouter un produit. CompositeView lui-même gérerait le bouton Ajouter un produit. Un ItemView serait spécifié pour rendre chaque produit dans la liste.

Les paiements seraient effectués de la même manière que les produits.

... encore une fois, ce n'est qu'une option pour le faire fonctionner. Vous pouvez faire le tout avec une vue Layout et deux vues de collection, ou l'ensemble en une seule ItemView (ce qui serait difficile à maintenir, mais tout de même possible).

Espérons que ça aide.