Innerhalb einer Ember controller
Ich habe eine Anzahl von actions
, die Daten Ereignisse (Update erstellen und löschen) auf den Laden.Ember zentrale Fehlerbehandlung innerhalb einer Aktion
Jede dieser Anforderungen hat die gleiche Fehlerbehandlungslogik, die viele Male wiederholt wird. Gibt es eine Möglichkeit, diese Fehlerlogik zu zentralisieren?
- Angesichts dieser Logik wird von vielen Routen verwendet werden, was wäre der beste Ort in Ember für das Leben?
- Wie kann der Kontext beibehalten werden, sodass
this
noch verfügbar ist, um Toast-Nachrichten an das DOM zu senden? Hier
ist ein Beispiel dafür, was ich habe jetzt
createEntryRecord() {
// This action is a 'create' button on a modal
set(this, 'isLoadingModal', true); // shows loading spinner
let dbid = this.get('dbidModal');
let type = this.get('entryModalType');
this.get('store').createRecord('my-store', {
type,
dbid
})
.save()
.then((record) => {
get(this, 'flashMessages').success(`Created`); // Toast message
})
.catch((e) => {
// Begin of the error handling logic
let errors = get(e, 'errors');
if (errors.length) {
errors.forEach(err => {
let field = err.source.pointer.split("/").pop();
get(this, 'flashMessages').danger(`${field}: ${err.detail}`);
});
} else {
let message = get(e, 'message');
get(this, 'flashMessages').danger(`${message}`);
}
})
.finally(() => {
set(this, 'isLoadingModal', false); // stop the loading spinner
set(this, 'isEntryModalShown', false);
});
},
Wie wäre es mit einem Fehler-Service, den Sie injizieren können, wo immer Sie wollen und nach Bedarf wiederverwenden? – alptugd
@altptugd Das klingt nach einem guten Ansatz. Möchtest du es als Antwort posten? – oden