Javascript Ember.js:在一个路由/模板中获取多个模型(hasMany)

Javascript Ember.js:在一个路由/模板中获取多个模型(hasMany),javascript,node.js,express,ember.js,json-api,Javascript,Node.js,Express,Ember.js,Json Api,一项作业可以有许多提交。我正在尝试使用/assignments/1路径将提交的内容显示在作业模板中。(显示分配中的数据按预期工作。) 我使用的是Ember 2.10和Ember data 2.10。 app/router.js: this.route('assignments', function() { this.route('assignment', {path: ':assignment_id'}); }); app/routes/assignments/assignme

一项作业可以有许多提交。我正在尝试使用/assignments/1路径将提交的内容显示在作业模板中。(显示分配中的数据按预期工作。) 我使用的是Ember 2.10和Ember data 2.10。

app/router.js:

  this.route('assignments', function() {
    this.route('assignment', {path: ':assignment_id'});
  });
app/routes/assignments/assignment.js:

import Ember from 'ember';

export default Ember.Route.extend({
  model: function(){
    return Ember.RSVP.hash({
      assignments: this.store.findRecord('assignment', params.assignment_id),
      submissions: this.store.findAll('submission', params.assignment_id)
    });
  },
  setupController: function(controller, models){
    controller.set('assignment', models);
    controller.set('submission', models);
  }
});
import DS from 'ember-data';

export default DS.Model.extend({
  title: DS.attr('string'),
  ispublic: DS.attr('boolean'),
  emailnotification: DS.attr('boolean'),
  markdown: DS.attr('string'),
  submission: DS.hasMany('submission')
});
app/models/assignment.js:

import Ember from 'ember';

export default Ember.Route.extend({
  model: function(){
    return Ember.RSVP.hash({
      assignments: this.store.findRecord('assignment', params.assignment_id),
      submissions: this.store.findAll('submission', params.assignment_id)
    });
  },
  setupController: function(controller, models){
    controller.set('assignment', models);
    controller.set('submission', models);
  }
});
import DS from 'ember-data';

export default DS.Model.extend({
  title: DS.attr('string'),
  ispublic: DS.attr('boolean'),
  emailnotification: DS.attr('boolean'),
  markdown: DS.attr('string'),
  submission: DS.hasMany('submission')
});
app/models/submission.js:

import DS from 'ember-data';

export default DS.Model.extend({
  title: DS.attr('string'),
  markdown: DS.attr('string'),
  assignment: DS.belongsTo('assignment')
});
app/templates/assignments/assignment.hbs:

{{assignment.title}}

{{#each submissions as |submission|}}
  {{submission.title}}
{{/each}}
我正在使用JSONAPI格式的来自ember数据的http模拟。服务器不会执行额外的请求来获取与分配相关的所有提交。我不确定是否需要执行额外请求:

server/mocks/assignments.js:

module.exports = function(app) {
  var express = require('express');
  var assignmentsRouter = express.Router();


  var assignments = {
    "data": [
        {
            "type": "assignments",
            "id": "1",
            "attributes": {
                "title": "Deze is niet public",
                "ispublic": "false",
                "emailnotification": "false",
                "markdown": "This is the markdown of the first assignment"
            },
            "relationships": {
              "submissions": {
                "data": [
                  { "type": "submissions", "id": "1" }
                ]
              }
            }
        },
        {
            "type": "assignments",
            "id": "2",
            "attributes": {
                "title": "Deze is public",
                "ispublic": "true",
                "emailnotification": "false",
                "markdown": "This is the markdown of the second assignment"
              },
              "relationships": {
                "submissions": {
                  "data": [
                    { "type": "submissions", "id": "2" },
                    { "type": "submissions", "id": "3" }
                  ]
                }
              }
        }]

      };

  assignmentsRouter.get('/:id', function(req, res) {
    //No need for this apparantly ember data caches the findAll request which gets all the assignments...
  });

  app.use('/api/assignments', assignmentsRouter);
};
server/mocks/submissions.js:

module.exports = function(app) {
  var express = require('express');
  var submissionsRouter = express.Router();

  var submissions = {
    "data": [
        {
            "type": "submissions",
            "id": "1",
            "attributes": {
                "username": "Myusermane",
                "title": "Pretty title",
                "markdown": "Some text"
            },
            "relationships": {
              "assignments": {
                "data": [
                  { "type": "assignments", "id": "1" }
                ]
              }
            }
        },
        {
            "type": "submissions",
            "id": "2",
            "attributes": {
                "username": "Somebody",
                "title": "Nice title",
                "markdown": "Some other text"
            },
            "relationships": {
              "assignments": {
                "data": [
                  { "type": "assignments", "id": "2" }
                ]
              }
            }
        },
        {
            "type": "submissions",
            "id": "3",
            "attributes": {
                "username": "Whoelse",
                "title": "Test",
                "markdown": "Text"
            },
            "relationships": {
              "assignments": {
                "data": [
                  { "type": "assignments", "id": "2" }
                ]
              }
            }
        }]
      };

  submissionsRouter.get('/', function(req, res) {
    res.send(submissions);
  });

  app.use('/api/submissions', submissionsRouter);
};

还有什么不起作用?你期望什么,但是你有不同的结果?我期望来自提交的数据显示在分配模板内的循环中。没有错误可查看,但在进入作业/1之前,我必须转到/assignments。否则我会得到这个错误。处理路由时出错:assignments.assignment参数未定义引用错误:未定义参数。(我认为这不相关)