我正在使用Embers findQuery
方法并想知道如何在没有结果时捕获404错误?
this.store.findQuery('customer', { hasProjects: true, getArchivedProjects: archived }).then(function(customers) {
});
如果查询为空,则此then
函数中的代码不会被触发,因此我甚至无法检查customers
的类型。
示例:
this.store.findQuery('customer', { hasProjects: true, getArchivedProjects: archived }).then(function(customers) {
console.log('foo')
});
如果查询返回404,则不会触发console.log
。
答案 0 :(得分:2)
findQuery函数返回一个promise。然后,您可以为then()提供两个函数,第一个是成功路径,第二个是失败路径......例如:
this.store.findQuery('customer', { hasProjects: true, getArchivedProjects: archived }).then(function(customers) {
console.log('foo')
}, function(error) { /* do something with error */ });
答案 1 :(得分:2)
替代答案:
在相应的路线中添加error
挂钩:
App.CustomersIndexRoute = Ember.Route.extend({
actions: {
error: function(reason) {
if (reason.status === 404) {
// do something ...
}
}
}
})
请参阅:http://emberjs.com/guides/routing/asynchronous-routing/#toc_when-promises-reject。