在emberjs中的models()钩子内捕获块

时间:2018-03-01 02:30:09

标签: ember.js ember-data

我可以在catch挂钩中添加model方法吗?就像这样:

model(params) {
    return this.store.findRecord('shop', params.slug)
    .catch( () => 
        this.transitionTo('welcome.shops.index'))
    }
}

我的目标是在用户输入错误的slug时对其进行路由。如果对我的欲望行为有更好的方法,请提出建议。非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

你被允许这样做,但我不认为这是最佳做法。让我们深入了解你在做什么:

this.store.findRecord('shop', params.slug)返回一个Promise。 Promise.catch()返回一个Promise(如果promise拒绝,则注册要执行的函数)。

所以你的模型钩子从findRecord返回Promise,但是如果这个Promise拒绝,也会注册一个要执行的函数。

如果您的模型Promise拒绝,您应该使用Route error event来执行逻辑。