2016-10-20 4 views
1

Ich versuche etwas zu tun, das wirklich einfach klingt. Ich möchte Serverfehler zum Ausgang meiner application.hbs rendern.Ember + Ember-Daten, Fehlerbehandlungssubstanzen auf Anwendungsebene, Ember 2.8

Dieses Dokument zu lesen, https://guides.emberjs.com/v2.6.0/routing/loading-and-error-substates/, ich bin in der Lage, meine Fehler zu erkennen, aber ich kann nicht scheinen, den Fehler als ein Modell zu meinem error.hbs zu übergeben, indem ich dem gegebenen Muster folge.

Wenn ich den Fehleraktionshandler auf meiner Anwendungsroute wie angegeben registrieren, kann ich meine error.hbs-Vorlage rendern, aber ich kann nicht auf den Kontext des Fehlerobjekts zugreifen, mit dem ich es zu tun habe. Außerdem aktualisiert sich meine URL-Route, was nicht erwünscht ist.

actions: { 
    error(err, transition) { 
     return this.transitionTo('error'); 
    } 
} 

Mit diesem Handler, ich error.hbs meine Steckdose machen, aber ich bekomme keinen Zusammenhang von meinem Fehler Objekt zu dieser Vorlage zu machen. Wenn ich versuche, als ein Modell in dem Fehler passieren, ich diesen Fehler:

More context objects were passed than there are dynamic segments for the route: error 

Gerade jetzt, wenn ein Fehler auftritt, ein Modell laden, bekomme ich nur einen Lade Spinner Zustand, der für immer hängt. Ich möchte stattdessen den Serverfehler anzeigen.

Antwort

0

Fehler werden an fehlerhafte Unterzustände als Modell übergeben. Das Objekt, das throw n oder reject ed war, wird das Modell Ihres Fehlers substate sein und seine Attribute werden die Eigenschaften sein.

Zum Beispiel, wenn Sie throw oder RSVP.reject{ message: 'An Error Occurred' }, dann können Sie das in Ihrem error.hbs {{model.message}} mit angezeigt werden soll. Ich habe nie throw/reject Primitiven Arbeit gesehen.

Here is a twiddle that demonstrates working error substates (laden Sie die/reject und/undefined Routen, um weitere Beispiele zu sehen).

Code aus dem twiddle

templates/anwendungs ​​error.hbs (auch error.hbs sein könnte)

<p>Application-Error Template</p> 
<p>model: {{model}}</p> 
<p>model.message: {{model.message}}</p> 
<p>model.customMessage: {{model.customMessage}}</p> 

Routen/throw.js

model(params) { 
    throw { customMessage: 'Reject Error Message' }; 
}, 

Routen/reject.js

model(params) { 
    return Ember.RSVP.reject({ customMessage: 'Reject Error Message' }); 
}, 

Routen/undefined.js

model(params) { 
    use.undefined.value; 
}, 
Verwandte Themen