store.findRecord('school', school_id, {
include: [
'students',
'students.records'
].join(',')
使用上述代码获取学校,学生,学生记录数据的初始负荷。 在初始加载中,我不需要students.records(仅在最初列出学生)
仅在单击某些按钮时才需要学生记录(“所有学生成绩”-以显示成绩图表) 有什么方法可以单独获取关联记录并与现有模型链接
我有用于获取学生记录的api终结点
答案 0 :(得分:0)
强调文字您可以使用嵌套路线吗? 也许像这样:
schools
这全部使用相同的// 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' });
});
});
// ...
})
端点。
如果您只想获取学生的记录而又不影响学校的终点,那取决于您API的功能。
如果您想获取单个学生的记录,则可能希望为该学生提供一条子路线,并执行以下操作:
{{#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 };
}
}
在学生的学习路线中,您希望像这样构建模型挂钩:
{{1}}
如果不确定如何与API交互,则可能要提出有关API的另一个问题。在那里,我们可以探索其结构,例如它是oracle doc API还是非标准的rest api。
希望这会有所帮助。