我试图根据父模型模型为嵌套路径设置模型。
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个不同实例,当我真正需要的是能够从已经设置的对象数组中抓取对象时。