2017-09-18 3 views
-1

Actuellement, j'ai un formulaire appelé un "formulaire A", j'ai créé un certain nombre de vues pour ce formulaire, un modifier, créer et liste. Je veux être en mesure de créer un formulaire appelé "formulaire B", qui tirera à travers "l'ID du formulaire A" en tant qu'ID du parent. Pour me permettre d'avoir une liste de tout le formulaire B sous un "formulaire A" (essentiel un à plusieurs relation). Donc, au moment sous ma liste pour « former un » J'ai ce lien pour chaque article:Ember Js formes imbriquées

{{#link-to 'form-a.form-b.listing' form-a.id}} <!--Link to a controller --> 
     <span class="btn btn-primary"> form b </span> 
{{/link-to}} 

Voici aussi mon routeur

this.route('form-a', function() { 
    this.route('new'); 
    this.route('listing'); 
    this.route('edit', {path: '/edit/:form-a_id' }); 
    this.route('form-b', function() { 
     this.route('listing', {path: '/listing/:form-a_id'}); 
     this.route('new'); 
    }); 
    }); 

Je suis en train de tirer à travers l'identification de forme-a pour la liste. Cependant, je suis coincé ici car je ne sais pas comment faire et comment faire passer correctement l'identifiant "form a" dans le contrôleur listing et l'utiliser comme identifiant parent pour chaque "forme B". Y a-t-il une meilleure façon d'avoir des formulaires imbriqués avec un trop grand nombre de relations ou est-ce que j'y vais de la meilleure façon?

J'espère que quelqu'un peut aider ce problème car j'ai atteint le mur de codage. Si vous avez besoin de clarifications, demandez s'il vous plaît, car je suis généralement terrible à décrire mes problèmes.

Répondre

1

Ce message s'applique à Ember 2.x.x et a été écrit à partir de 2.15.

Je pense que ce qui vous aidera beaucoup est paramsFor().

Il est difficile de dire quelle est la «bonne» structure de routage parce que votre interface utilisateur va dicter quelque chose, et je ne suis pas sûr de la quantité d'URL exacte.

Voici comment je configurerais les routes, en supposant qu'il y aura plusieurs formes a dans le temps. Dans le code ci-dessus

this.route('form-as', function() { 
    this.route('form-a', {path: '/:form-a_id'}, function() { 
     this.route('new'); 
     this.route('listing'); 
     this.route('edit'); 
     this.route('form-b', function() { 
     this.route('listing', {path: '/listing'}); 
     this.route('new'); 
     }); 
    }); 
    }); 

, nouveau, inscription et modifier sous forme d'une aura accès à la forme d'un identifiant via le params dans le crochet de modèle des routes:

model(params) { 
    console.log(params['form-a_id']) 
    // using the [] accessor since dashes don't work for normal dictionary nav 
} 

Dans la forme segment b, la liste et les nouvelles peuvent avoir accès à la forme-un des paramètres comme celui-ci:

model() { 
    console.log(this.paramsFor('form-as.form-a')) 
} 

attention pour les ids dasherized et noms de modèle. Ils sont une source probable de bugs et je ne suis pas sûr à 100% que je les ai eu ici. Je les évite.

Pour en savoir plus sur les paramsFor(), voir Reusing Route Context dans les guides et Dynamic Segments