2016-07-04 11 views
0

ich so etwas in meiner Route haben:Zum neuen Artikel Route nach der Erstellung in Emberjs

actions: { 
    save(title, description) { 
    const newCard = this.get('store').createRecord('card', { title, description }); 
    newCard.save().then((card) => { 
     // card.id contains the id of the new card 
     this.transitionTo('cards.all'); // problem with this line 
    }); 
    } 
} 

Ich möchte auf die neue Karte Weg gehen, nachdem es zu schaffen. Ich kann die id des neuen Artikels von card.id bekommen. Ich habe das versucht, folgende, aber nicht von Nutzen:

this.transitionTo('cards.card', card.id); 

Dies wirft einige Fehler, da die cards.card Route nicht die id in den params finden.

Die folgende:

this.transitionTo('cards/' + card.id); 

wirft einen Fehler, der besagt, dass cards/45 Route nicht gefunden, aber wenn das neue Element erstellt wird und ich kann es navigieren.

Ich benutze Ember 2.6.1.

EDIT

Meine router.js Datei:

this.route('cards', function() { 
    this.route('all'); 
    this.route('card', {path: '/:card_id'}, function() { 
    this.route('edit'); 
    }); 
    this.route('new'); 
}); 
+0

Sie sollten Ihren Router senden. js-Datei, wenn Sie Fragen zum Routing stellen, damit wir wissen, welche Routen verfügbar sind, Verschachtelung und so weiter! – locks

+0

macht Sinn. Danke, dass du es aufgezeigt hast. –

Antwort

0

Es sollte sein:

this.transitionTo('cards.card', card); 

Ich brauchte nur, dies zu tun, da meine card.js params erwartete Objekt und ich habe versucht, eine Reihe weitergeben müssen:

model(params) { 
    return this.store.find('card', params.id); 
} 
1

Ist das, was zur Zeit der Router aussieht?

this.route('cards', function() { 
    this.route('all'); 
    this.route('card', {path: '/:card_id'}, function() { 
    this.route('edit'); 
    }); 
    this.route('new'); 
}); 

Wenn Ihr für eine bestimmte Karte an den neuen Weg gehen wollen, dann müssten Sie einen Butzen für neue definieren. So etwas wie

this.route('new', {path: /:card_id}); 

Der Übergang in der Aktion Hash würde wie folgt erhalten:

this.transitionTo('new', card.id); 

Hoffentlich ich Ihren Anwendungsfall zu verstehen, richtig.

+0

Ich glaube nicht, dass das funktioniert. Das Problem ist, dass der neu erstellte Artikel noch keine ID hat. –

+0

Starten Sie den Ember-Inspektor und setzen Sie einen Breakpoint (d. H. Debugger;) direkt vor dem Übergang zu. Überprüfen Sie dann den Status der neuen Karte, die Sie gerade beibehalten haben, um zu bestätigen, ob Sie eine ID haben oder nicht. – Visualjeff

+0

Ich möchte nach dem Erstellen des neuen Elements zu 'this.route ('cards.card', card.id) gehen, aber wenn ich das tue, wirft es mir diesen Fehler' '' Fehler beim Verarbeiten von route: cards.card. index Assertion Failed: Sie können nicht undefiniert als ID an die Find-Methode des Geschäfts übergeben. Fehler: Assertion Failed: Sie können nicht undefiniert als ID an die Find-Methode '' 'des Geschäfts übergeben, aber wenn ich eine' console.log (card.id) 'mache, es gibt mir die richtige ID. Außerdem habe ich 'this.transitionTo ('cards.card', 1) 'versucht, aber es hat mich den gleichen Fehler ausgelöst. aber 'cards/card/1' ist vorhanden. –