我有一位模特老师,有很多学生。模型定义如下:
App.Teacher = DS.Model.extend({
email: DS.attr('string'),
students: DS.hasMany('student')
});
App.Student = DS.Model.extend({
teacher: DS.belongsTo('teacher'),
});
当教师登录时,服务器返回教师的JSON表示:
{
id: 1,
email: "abc@example.com",
links: {
students: /teacher/1/students
}
}
在登录控制器中,我将此数据推送到商店并将其存储在会话控制器的属性中:
this.set('currentUser', this.get('store').push('teacher', teacherJson))
我想延迟加载students
关联,因此我使用了API(http://emberjs.com/api/data/classes/DS.Store.html#method_push)中定义的“链接”格式。所以,理想情况下,每当我打电话
App.SessionController.get('currentUser').get('students')
它会通过向students
发送GET请求来加载关联的/teacher/1/students
。但这从未发生过。为什么没有触发请求?
答案 0 :(得分:9)
好的,我找到了答案。我必须在async: true
模型的students
关联中添加一个属性Teacher
:
App.Teacher = DS.Model.extend({
email: DS.attr('string'),
students: DS.hasMany('student', { async: true })
});