当我的路径/map/:id
通过this.store.find('location', route.id)
找不到任何值时,我想重定向到另一个页面,而不是收到"adapter's response did not have any data"
错误。它似乎在它到达控制器之前就停止了处理。
我认为最好的方法是扩展DS.FixtureAdapter
或返回代理对象,直到this.store.find
结算。我阅读了文档,并说它通过DS.FixtureAdapter
或find
钩子等扩展findMany
。当我尝试时,似乎没有任何事件发生,我无法找出合适的替代回归物体。我做错了什么?
答案 0 :(得分:3)
this.store.find()
返回一个承诺。承诺解决有两个结果:1。良好和2.坏。您可以将2个函数传递到then()
方法,以告知承诺在每个方案中要执行的操作。
所以,让我们说你正在寻找一个记录并且它不存在(不良结果),你可以告诉灰烬过渡到另一条路线。
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