我想知道从组件中抛出错误的最佳方法是什么。在下面的例子中,我检查是否有一个动作传递,我抛出一个错误,以防止进一步执行这个工作,但错误路由不会像我预期的那样被触发。
/**
* Save step and go to the next step.
*/
next() {
if (isEmpty(this.get('nextAction'))) {
throw new Error('The nextAction is undefined.');
}
if (isEmpty(this.get('saveAction'))) {
throw new Error('The saveAction is undefined.');
}
const insuranceApplication = this.get('model');
if (this.isLastDependent(this.get('dependentIndex'), insuranceApplication.get('dependents.length'))) {
return this.get('nextAction')();
}
return this.get('saveAction')().then(() => {
this.set('dependent', this.getNextDependent(insuranceApplication.get('dependents')));
});
}
答案 0 :(得分:0)
您可以使用路径模板处理错误状态。 https://guides.emberjs.com/v2.14.0/routing/loading-and-error-substates/#toc_code-error-code-substates。
但是对于组件,您需要捕获错误并将其分配给组件的属性。
一个简单的例子可能与你已经接近的一样。
// component.js
if (isEmpty(this.get('nextAction'))) {
this.set('error', 'The nextAction is undefined.');
}
// compontent.hbs
{{#if error}}
Error: {{error}}
{{/if}}