我正试图通过创建一个简单的考勤应用来了解Ember Data。目标是让学生输入他们的姓名并点击提交,创建与该学生相关联的新出勤记录。以下是我为使其发挥作用所做的工作:
App.Student = DS.Model.extend({
name: DS.attr('string'),
attendances: DS.hasMany('attendance', { async: true })
});
App.Attendance = DS.Model.extend({
student: DS.belongsTo('student', { async: true }),
...
});
-
App.NewAttendanceController = Ember.ObjectController.extend({
content: {},
actions: {
createAttendance: function() {
var studentName = this.get('name');
this.store.find('student', { name: studentName })
.then(function(fulfilledPromise) {
var student = fulfilledPromise.get('firstObject');
var attendance = fulfilledPromise.store.createRecord('attendance', {
time: moment(),
student: student
});
attendance.save();
});
}
}
});
在createAttendance
操作中,我首先获取输入的名称,找到匹配的student
条记录,等待完成的承诺,然后再抓取第一个student
,然后创建新的attendance
记录它的学生属性设置为抓取的student
记录并保存。
所以这很有效,但感觉很奇怪。我希望有人可以告诉我更好的方法来选择记录并在Ember Data中建立关联。