EmberJS transitionTo forync的firstObject hasMany

时间:2013-11-15 17:04:04

标签: javascript asynchronous ember.js ember-data

我想在用户到达包含对象时将用户重定向到集合的firstObject的路由。

一个容器hasMany项目,目前位于ContainerRoute.afterModel我正在做的事情:

this.transitionTo('container.item.index', model, model.get('items').get('firstObject'));

当项目不是异步时哪个很好。

问题是firstObject不是一个承诺所以route/transition doesn't pause

这是model钩子:

return this.get('store').find('container', params.containerId);

什么是最干净的方法?我看到的选项是:

  • 更改模型挂钩以填充
  • 构建并将promise作为参数传递给transitionTo
  • transitionTo对象的ID而不是对象(现在为此编写解决方案)

2 个答案:

答案 0 :(得分:0)

transitionTo可以获取对象(实际或承诺)或ID。

我选择只在ContainerRoute

中发送ID
this.transitionTo('container.item.index', model, model.get('firstItemId'));

您可以通过访问以下内容获取ID而不会使对象膨胀:

this.get('data.submissions.firstObject.id');

这是从github issue about avoiding loadMany

借来的

答案 1 :(得分:0)

hasMany属性是一个类似于对象的promise,因此您可以使用then方法来了解何时无法解析:

model.get('items').then(function(items) {
  this.transitionTo('container.item.index', model, items.get('firstObject'));
});