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