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()
.
所以我有这个模型的路线:
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()
.