EMBER JS-仅在需要时才从后端获取关联的模型数据

时间:2018-10-09 05:42:33

标签: ember.js ember-data ember-cli-pods

store.findRecord('school', school_id, {
                 include: [
                  'students',
                  'students.records'
                 ].join(',')

使用上述代码获取学校,学生,学生记录数据的初始负荷。 在初始加载中,我不需要students.records(仅在最初列出学生)

仅在单击某些按钮时才需要学生记录(“所有学生成绩”-以显示成绩图表) 有什么方法可以单独获取关联记录并与现有模型链接

我有用于获取学生记录的api终结点

1 个答案:

答案 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。

希望这会有所帮助。