如果使用RSVP.hash(),模型实例不通过链接发送到动态路由

时间:2017-04-24 23:25:18

标签: ember.js ember-data

如果动态路由是模型哈希,我似乎无法将模型实例传递给动态路由。

我有一条公司路线:

// routes/companies,js
export default Ember.Route.extend({
  model() {
    return this.get('store').findAll('company');
  }
});

公司/编辑路线:

// routes/companies/edit.js
export default Ember.Route.extend({
  model(params) {
    var store = this.store;
    return Ember.RSVP.hash({
      companies: store.findRecord('company', params.company_id),
      companyTypes: store.findAll('companyType')
    });
  }
});

我的公司模板是:

<!-- templates/companies.hbs -->
<div style="width:400px; height: 300px; overflow:true;float:left;">
  <h2>Companies</h2>

  {{#each model as |company|}}
    <p>
      {{#link-to "companies.show" company}}{{company.companyName}}{{/link-to}}
      {{#link-to 'companies.edit' company}}Edit{{/link-to}}
    </p>
  {{/each}}
  {{#link-to 'companies.new'}}New{{/link-to}}
</div>
{{outlet}}

如果我直接进入动态路线,一切正常。

但是,link-to位于companies.hbs我将公司模型传递到companies.edit路线,但数据永远不会传到companies.edit({{1} } {是company)我假设因为undefined期待模型哈希。

1 个答案:

答案 0 :(得分:1)

使用Stack Overflow进行橡胶闪避再次起作用。

更改companies.edit以传递ID,而不是模型:

link-to

当您传递id时,如果只是传递模型,则会导致模型钩子重新触发并忽略模型钩子。我不完全确定为什么似乎有必要提供id并强制模型钩子在这种情况下重新填充哈希。

也许Ember无法推断哈希中使用的模型或其他一些副作用?