2

我试图根据模型的父数组为嵌套路由设置模型。

Msmapp.ClassroomStudentsRoute = Ember.Route.extend({  
  model: function(params) {
    return this.modelFor('classroom').get('classroomStudents');
  }
});

Msmapp.ClassroomStudentsStudentRoute = Ember.Route.extend({
  model: function(params) {
    var studentObjects = this.modelFor('classroom_students'),
        studentObject = null;

        studentObjects.forEach(function(student) {
          if (student.get('id') == params.student_id) {
               studentObject = student;
          }
        });

   return studentObject;
  }
});

通常在导航到这条路线时它很好,因为我沿着模型传递,但如果我尝试复制/粘贴 url 或从它必须击中路由器的这一点刷新页面,我什么也得不到。

如果我控制台日志 studentObject.toString() 我可以看到它看起来我正在返回一个 Msmapp.Student 对象,所以我不确定我缺少什么或可能需要做些什么才能让它工作。

这些是我的路线

this.resource('classrooms', function() {
    this.resource('classroom', {path: ':classroom_id'}, function() {
        this.route('new_student');
        this.resource('classroom_students', function() {
            this.route('student', {path: ':student_id'})
        });
        this.route('new_assignment');
        this.resource('classroom_assignments', function() {
            this.route('assignment', {path: ':assignment_id'})
        });
    });
    this.route('new');
});

这个对学生对象的初始请求以 JSON 格式返回给教室。

classStudents 是一个计算属性,它循环学生对象并为每个对象创建一个 Msmapp.Student 对象。

此外,如果我将路由更改为 Msmapp.ClassroomStudent 它可以工作,但它会向服务器发出请求以获取对象。然后我最终得到同一个对象的 2 个不同实例,而我真正需要的是能够从已经设置的对象数组中获取对象。

4

0 回答 0