5つのカテゴリを表示するルートがあります。各カテゴリは1人の子供しか持たないことを意図しています。私は子供のルートを作成し、選択されたカテゴリタイプidをqueryparamterとして渡します。子ルートモデル()では、store.queryRecord()でパラメーターを使用して、バックエンドに照会して、そのタイプに一致するレコードを返すか、何も返さないようにします。レコードが存在する限り、これは正常に動作するようです。私が実行している問題は、子レコードを持たないカテゴリを選択した場合です。 queryRecordから何も返されない場合、テンプレートは前のデータを表示し続けます。ネットワーク要求が正常に完了したことがわかり、空の配列が返されます。ページを更新すると、テンプレートにモデルデータがないことが正しく示されます。モデルがstore.queryRecordを返すときに、レンダリングされたテンプレートを更新します。
モデルがレコードをもはや持っていないときにテンプレートをリフレッシュする方法を見つけようと、一日中苦労しました。私はこれを後ろ向きにしていると感じています。私はどんな指針にも感謝しています。
親:
export default Ember.Route.extend(AuthenticatedRouteMixin,{
user: Ember.inject.service('user'),
model() {
var user = this.get('user');
return this.store.findAll('strategic-priority',{ location: user.get('selectedLocationId'), year: user.get('selectedYearId') });
}
});
HBS
{{#each model as |strategic-priority|}}
{{#link-to 'priority-area.goal' (query-params priorityArea=strategic-priority.id) class="list-group-item"}} {{strategic-priority.label}} - {{strategic-priority.text}} {{/link-to}}
{{/each}}
子供:
{{#if hasModel}}
とカテゴリを表示するテンプレートをラップすることですあなたは試みることができる
export default Ember.Route.extend({
user: Ember.inject.service('user'),
queryParams: {
priorityArea: {
refreshModel: true,
replace: false,
}
},
model(params) {
Ember.Logger.debug(params); //I see this is in the console so I know this code is being called each time
var user = this.get('user');
return this.store.queryRecord('goal',{ location: user.get('selectedLocationId'), year: user.get('selectedYearId'),priority: params.priorityArea});
}
});
子レコードがあります。だからあなたは 'category'モデルを持っていて、' hasMany() 'のようないくつかの関係データを持っていますか?あなたのプロジェクトやjsbin/ember twiddleに公開されているgithubのリンクがありますか?あなたのコードを見ることができますか? – Zoltan
正直言って私はhasManyの使い方を本当に理解していません。この場合、理論上の各カテゴリには多くの子がありますが、特定のパラメータと一致する子のみを表示し、最初はユーザーが作成するまで子を表示しません。私はqueryRecordを使用していたので例を作ることはできないと思っていましたが、前にember twiddleについて聞いていなかったので、私はそのショットを与えます。ありがとう! – HappyDude