Ember将路径模型设置为模型阵列中的对象

时间:2013-06-13 05:45:35

标签: ember.js

我试图根据父模型模型为嵌套路径设置模型。

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;
  }
});

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

如果我控制日志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中。

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

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

0 个答案:

没有答案