Ember替代查询params与服务

时间:2018-04-13 09:36:38

标签: ember.js ember-data ember-cli query-parameters

所以我有这个模型的路线:

model() {
   var self = this;
   return RSVP.hash({
    comptes : this.get('store').findAll('compte'),
    contrats: 
    this.get('store').findAll('contrat').then(function(contrats) {
      return contrats.filterBy("contrat_fk.id", 
         self.get('currentContract.contrat.id'));
      }),
    })
  }

我的目标是使用我的服务currentContract提供的值过滤模型contrat。

重新加载页面时工作正常,但是当我更改路径并返回到此路径时,模型似乎无法加载,我必须重新加载页面才能看到它。

我真的不想使用查询参数并将合同ID放在网址中

1 个答案:

答案 0 :(得分:1)

将过滤器逻辑移动到控制器中的计算机属性。然后,当依赖关键字正确时,一切都会正常工作。

例如,在您的路线中,您可以执行此操作:

model() {
  return this.store.findAll('contrat');
}

然后在你的控制器中:

currentContract: service(),
filteredContracts: computed('currentContract.contrat.id', 'model.@each.id', {
  get() {
    const cci = this.currentContract.contrat.id;
    return this.model.filter(c => c.id === cci);
  }
}),

要小心:此代码使用.作为getter,适用于ember 3.1。对于旧版本,您需要使用.get()