выделенный текст Вы могли бы использовать вложенный маршрут?может быть что-то вроде:
// router.js
Router.map(function() {
// ...
this.route('school', { path: ':school_id' }, function() {
this.route('performance');
});
// ...
})
// the school route
import Route from '@ember/routing/route';
export default class extends Route {
async model(params) {
const { school_id } = params;
const school = await store.findRecord(
'school', school_id, { include: 'students' }
);
return { school }
}
}
// the performance route
import Route from '@ember/routing/route';
export default class extends Route {
async model() {
// get the id from the parent route
const { school_id } this.paramsFor('school');
const school = await store.findRecord(
'school', school_id, { include: 'students.records' }
);
// depending if the relationship is async or not, students
// will need to be awaited
const students = await school.students;
return { students }
}
}
Все это использует одну и ту же schools
конечную точку.Если вы хотите получать только записи учащегося, не затрагивая конечную точку школы, это зависит от возможностей вашего API.
если вы хотите получить записи отдельного учащегося, вам, вероятно, понадобится дополнительный маршрут дляученик, и сделайте что-то вроде этого:
// router.js
Router.map(function() {
// ...
this.route('school', { path: ':school_id' }, function() {
this.route('performance');
this.route('students', function() {
this.route('student', { path: ':student_id' });
});
});
// ...
})
, и вы будете ссылаться на этот маршрут, например, так:
{{#link-to 'school.students.student' school_id student_id}}
Student Name
{{/link-to}}
и в своем маршруте ученика вы захотите построитьваш хук модели выглядит так:
// the student route
import Route from '@ember/routing/route';
export default class extends Route {
async model(params) {
// get the id from the parent route
const { school_id } this.paramsFor('school');
const { student_id } = params;
const student = await store.findRecord(
'student', student_id, { include: 'records' }
);
// depending if the relationship is async or not, students
// will need to be awaited
const records = await student.records;
return { student, records };
}
}
Возможно, вы захотите открыть еще один вопрос о вашем API, если вы не знаете, как с ним взаимодействовать.Там мы могли бы исследовать, как он структурирован, например, если это API http://jsonapi.org/ или нестандартный API отдыха.
Надеюсь, это поможет.