Ember 用服务替代查询参数

Ember alternative to query params with service

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

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 提供的值过滤模型合同。

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

而且我真的不想使用查询参数并将合同 ID 放在 URL

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

例如在你的路线中你可以这样做:

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().