2017-03-14 1 views
1

j'ai vu le becameError et becameInvalid déclenche au sein de la classe modèle, par exemple:Ember: insérer des erreurs de modèle dans un modèle d'application

//model/car.js 
example import Ember from "ember"; 
import Model from "ember-data/model"; 

export default Model.extend({ 
    becameError() { 
    alert('there was an error!'); 
    }, 

    becameInvalid(errors) { 
    alert(`Record was invalid because: ${errors}`); 
    }, 
}); 

Maintenant, quand je sauve le modèle et mon backend renvoie une erreur, l'alerte être montré. Mais comment puis-je afficher le message d'erreur dans le modèle d'application?

Quelque chose comme:

becameError() { 
    applcation.set('hasError', true); 
    }, 

//application.hbs 
{{#if hasError}} 
    <h1>An error has occured!</h1> 
{{/if}} 

Répondre

2

Vous pouvez utiliser service pour cela.

//services/error-container.js 
... 
errors: Ember.A() 
... 

maintenant modèle de voiture

//models/car.js 
... 
export default Model.extend({ 
    errorContainer: Ember.inject.service(), 
    becameError() { 
    alert('there was an error!'); 
    this.get('errorContainer.errors').pushObjects(this.get('errors')); 
    } 
... 

et dans le modèle d'application

//application.hbs 
{{#if hasError}} 
    {{#each errorContainer.errors as |error|}} 
     <div>error.message</div> 
    {{/each}} 
{{/if}} 

et contrôleur d'application

... 
errorContainer: Ember.inject.service(), 
hasError: Ember.computed.notEmpty('errorContainer.errors') 
... 

vous devez également prendre soin de compensation enlever objet d'erreur de errors aussi