使用findQuery()处理ember-data中的promise拒绝

时间:2013-08-07 11:02:11

标签: ember.js ember-data rsvp.js

在使用findQuery(.. query ..)时,我似乎无法使用ember-data来拒绝失败(404' s);找到(.. ID ..);工作正常。

所以在路线中:

App.PostRoute = Ember.Route.extend({

  serialize: function(model, params) {
    return { post_id: model.get('slug') };
  },

  model: function(params){
    var query = {};
    query.slugs = params.post_id;
    return App.Post.findQuery(query).then( 
      function (data) {
        return data.get('firstObject');
      }, 
      function (error) {
        console.log('error');
        throw 'boom!';
      }
    )
  },

  setupController: function(controller, model){
    this.controllerFor('post').set('content', model);
  },

  events: {
    error: function (reason, transition) {
     console.log('Error!');
    }
  }

});

我也试过这个:

return App.Post.findQuery(query).then( function (data) {
  return data.get('firstObject');
}).then( null, function (error) {
  console.log('error');
  throw 'boom!';
});

没有快乐。我可以看到对URL的请求返回为404,但永远不会触发promises错误。我错过了什么?

1 个答案:

答案 0 :(得分:0)

我不知道它是否只是一个拼写错误,但是events中的PostRoute哈希应该调用events你应该将其定义为单数event这可能是为什么你的error钩子里面找不到这个哈希并且没有被调用的原因:

App.PostRoute = Ember.Route.extend({
  ...
  events: {
    error: function (reason, transition) {
      console.log('Error!');
    }
  }
});

希望它有所帮助。