Ember.js: Die Verwendung von this.transitionTo überspringt das Laden des Modells

Erstellt am 22. Dez. 2013  ·  3Kommentare  ·  Quelle: emberjs/ember.js

Ich bin mir nicht sicher, ob dies absichtliches Verhalten ist, aber lassen Sie es mich erklären. Wenn ich eine TransitionTo auf einer Route mit dynamischen Segmenten verwende, wird die Modellmethode auf der Zielroute nie aufgerufen. Im Wesentlichen gehe ich nur durch einen Parameter mit einer ID und möchte immer noch das richtige Modell laden.

Wenn ich die Seite mit der richtigen URL aktualisiere, wird das Modell jedoch problemlos geladen. Ich habe einen Codepen zusammengestellt, um es zu demonstrieren.

http://codepen.io/anon/pen/LsfhB

Die aktuelle Version meldet sich an der Konsole "Ich bin hier" ab. Wenn Sie sich IndexRoute ansehen, gibt es einen auskommentierten Übergang. Wenn dies aktiviert ist, wird das "Ich bin hier" nie ausgelöst.

Ist dies zu erwarten? Wenn ja, wo soll ich mein Modell für die Bestätigungsroute laden?

Hilfreichster Kommentar

Wenn Sie den Übergang auf this.transitionTo('confirm', 1); ändern, funktioniert er wie erwartet.

IIRC Wenn Sie Primitive (Zeichenfolge, Zahl) an den Übergang anstelle eines vollständigen Modells übergeben, wird dies als ID erkannt und verwendet, um die Parameter für den Aufruf von model zu erstellen, aber wenn Sie etwas Komplexes durchgeben (in in diesem Fall ein Objekt), dann behandelt es das so, als hätten Sie das Modell übergeben und ruft daher den Modell-Hook nicht auf.

Die API-Dokumentation könnte wahrscheinlich ein Beispiel für die Übergabe von IDs anstelle von vollständigen Modellen gebrauchen :

Hoffe das macht Sinn

Alle 3 Kommentare

Wenn Sie den Übergang auf this.transitionTo('confirm', 1); ändern, funktioniert er wie erwartet.

IIRC Wenn Sie Primitive (Zeichenfolge, Zahl) an den Übergang anstelle eines vollständigen Modells übergeben, wird dies als ID erkannt und verwendet, um die Parameter für den Aufruf von model zu erstellen, aber wenn Sie etwas Komplexes durchgeben (in in diesem Fall ein Objekt), dann behandelt es das so, als hätten Sie das Modell übergeben und ruft daher den Modell-Hook nicht auf.

Die API-Dokumentation könnte wahrscheinlich ein Beispiel für die Übergabe von IDs anstelle von vollständigen Modellen gebrauchen :

Hoffe das macht Sinn

Macht jetzt Sinn. Meine erste Bauchfrage nach Ihrem Kommentar war, wie Sie mehrere Parameter übergeben. Aber es sieht so aus, als ob Sie sie einfach als separate Argumente übergeben.

this.transitionTo('confirm.url', 1, 'the-slug-I-want');

Das funktioniert gut für mich.

Frage hier, wenn Sie eine Route mit Unterrouten haben, alle mit dynamischem Segment:
z.B
this.route('organization', { path: 'organizations/:organization_id' }, function() {
this.route('project', { path: 'projects/:project_id' }, function() {
this.route('screen', { path: 'screens/:screen_id'});
});
und ich bin in einer anderen route zB auth route. Wenn ich zu this.transitionTo('organization.project.screen',
{organization_id: 'grege23-234-4c3e-96fe-234423' },
{project_id: '234234-23423-4b99-a492-234' },
{screen_id: '34534-48f4-471d-ad17-3'45 });
Ich sehe nichts, weil Modell nicht geladen ist.
Wie konntest du für dieses gehen?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen