EmberJS 模型挂钩:this.store.find returns 无数据。如何重定向到 404 页面?
EmberJS model hook: this.store.find returns no data. How do I redirect to a 404 page?
当我的路径 /map/:id
通过 this.store.find('location', route.id)
找不到任何值时,我想重定向到另一个页面而不是收到 "adapter's response did not have any data"
错误。它似乎在到达控制器之前就停止了处理。
我认为最好的方法是扩展 DS.FixtureAdapter
或 return 一个代理对象,直到 this.store.find
解析。我阅读了文档,它说要通过 find
或 findMany
挂钩等扩展 DS.FixtureAdapter
。当我尝试时,似乎没有任何事件触发,而且我无法找到合适的替代 return 对象。我做错了什么?
this.store.find()
returns一个承诺。 Promise 决议有 2 个结果:1. 好的和 2. 坏的。您可以将 2 个函数传递到 then()
方法中,以告知 promise 在每种情况下要做什么。
所以,假设您正在寻找一条记录,但它不存在(结果不佳),您可以告诉 ember 转换到另一条路线。
App.DudeRoute = Ember.Route.extend({
model: function() {
var route = this;
return this.store.find('dude', 5).then(
function(dude){
return dude;
},
function(error){
route.transitionTo('nomansland');
});
}
});
另请注意,您需要创建一个 route
变量,因为在糟糕的场景中仅使用 this
是行不通的,因为 this
会获得一个新的上下文。
工作示例here
当我的路径 /map/:id
通过 this.store.find('location', route.id)
找不到任何值时,我想重定向到另一个页面而不是收到 "adapter's response did not have any data"
错误。它似乎在到达控制器之前就停止了处理。
我认为最好的方法是扩展 DS.FixtureAdapter
或 return 一个代理对象,直到 this.store.find
解析。我阅读了文档,它说要通过 find
或 findMany
挂钩等扩展 DS.FixtureAdapter
。当我尝试时,似乎没有任何事件触发,而且我无法找到合适的替代 return 对象。我做错了什么?
this.store.find()
returns一个承诺。 Promise 决议有 2 个结果:1. 好的和 2. 坏的。您可以将 2 个函数传递到 then()
方法中,以告知 promise 在每种情况下要做什么。
所以,假设您正在寻找一条记录,但它不存在(结果不佳),您可以告诉 ember 转换到另一条路线。
App.DudeRoute = Ember.Route.extend({
model: function() {
var route = this;
return this.store.find('dude', 5).then(
function(dude){
return dude;
},
function(error){
route.transitionTo('nomansland');
});
}
});
另请注意,您需要创建一个 route
变量,因为在糟糕的场景中仅使用 this
是行不通的,因为 this
会获得一个新的上下文。
工作示例here