EmberJS模型钩子:this.store.find不返回任何数据。如何重定向到404页面?

时间:2015-01-06 20:16:08

标签: ember.js ember-data

当我的路径/map/:id通过this.store.find('location', route.id)找不到任何值时,我想重定向到另一个页面,而不是收到"adapter's response did not have any data"错误。它似乎在它到达控制器之前就停止了处理。

我认为最好的方法是扩展DS.FixtureAdapter或返回代理对象,直到this.store.find结算。我阅读了文档,并说它通过DS.FixtureAdapterfind钩子等扩展findMany。当我尝试时,似乎没有任何事件发生,我无法找出合适的替代回归物体。我做错了什么?

1 个答案:

答案 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