2017-12-28 8 views
0

Mit Ember 2.17.0 scheint es nicht möglich zu sein, Routen, die unter anderen dynamischen Routen verschachtelt sind, korrekt zu laden.EmberJS verschachtelte dynamische Routen werden nicht wie erwartet umgeleitet

Mit der folgenden Dateistruktur möchte ich die stacks Route eine neue Seite laden.

features/instances/ 
├── edit 
│   ├── route.js 
│   └── template.hbs 
├── index 
│   ├── route.js 
│   └── template.hbs 
├── new 
│   ├── route.js 
│   └── template.hbs 
└── view 
    ├── route.js 
    ├── stacks 
    │   ├── route.js 
    │   └── template.hbs 
    └── template.hbs 

Die URL für den stacks Endpunkt sieht aus wie /instances/view/91467053-ba03-33b9-8950-83f0e64b4688/stacks/123456

Wo 123456 die ID des Stapels Modell. Aber in dem Moment, wenn ich den Link oben auslösen, lädt die Seite nicht neu und ich bin immer noch auf der view Route. Wenn ich ein {{outlet}} Tag in die view Vorlage einfüge, wird der Inhalt der stacks dort gerendert. Aber ich will es auf seine eigene Seite ...

Mein router.js

Router.map(function() { 
    this.route('instances', function() { 

    this.route('view', {path: '/view/:instance_id'}, function() { 
     this.route('stacks', {path: '/stacks/:stack_id'}); 
    }); 

    this.route('edit'); 
    this.route('new'); 
    this.route('all'); 

    }); 
    this.route('error'); 
}); 

Was ich hier falsch gemacht? Ich kann nicht viel über verschachtelte dynamische Routen für Glut 2.0+

Antwort

0

finden Ich hoffe, ich verstehe Ihr Problem richtig. Es gibt zwei Möglichkeiten, dies zu tun:

1) statt view/template.hbs setzen, dass HTML in view/index/template.hbs, so view/stacks/template.hbs wird keiner der view Template-Code teilen.

2) anstelle der stacks Route in der view Route der Verschachtelung ziehen an Ihnen, die instances Route mit path: '/view/:instance_id/stacks/:stack_id' und dann

+0

Danke für die Antwort, RE Option 1, wenn ich das mache, was Sie vorgeschlagen haben, werden die Dinge seltsam, da sie den Indexordner über der Ansichtsroute bereits sind. also Anfragen an mein Backend werden zu '/ instances/e3f61b5a-89e3-3d1c-a3ce-e0df22817a9b' anstelle von'/instances/view/e3f61b5a-89e3-3d1c-a3ce-e0df22817a9b' –

+0

Und folgende Option 2, bekomme ich keine Konsolenfehler, aber die Seite ist nur leer. Wie die template.hbs wird komplett ignoriert. –

+0

Die Back-End-Anforderungs-URLs sollten nicht mit Ihrer Front-End-Routenstruktur verknüpft sein. Möglicherweise müssen Sie jedoch explizit alle Modell-Hooks implementieren. – TBieniek

0

Nested Routen in Ember nicht funktionieren, wie Sie entsprechend die Route/Template-Dateien verschieben‘ Wieder verwendet zu.

In den meisten anderen View-Frameworks impliziert eine verschachtelte Route eine Beziehung zwischen Objekten, in Ember verschachtelte Routen implizieren eine verschachtelte Ansicht.

So könnten Sie zum Beispiel eine messages.index-Route haben, die eine messages.show-Route nistet, wenn Sie eine Liste der gerenderten Nachrichten und die Möglichkeit haben möchten, sie in einem Detailfenster daneben zu öffnen.

Wenn Sie etwas unabhängig (also nicht verschachtelt in einer anderen Ansicht) rendern möchten, geben Sie ihm einfach eine eigene Route.

Verwandte Themen