您可以使用自定義event
從您的路線內部進行管理。從您的視圖/控制器中,您將事件引發到路線,該路線負責爲學生添加一些數據。
App.ApplicationRoute = Em.Route.extend({
events: {
createStudent: function(student, gradeId) {
var grade = App.Grade.find(gradeId);
var newStudent = App.Student.create({
name: student.name,
address: student.address,
grade: grade
});
newStudent.save();
// other application related stuff
}
}
});
而從控制器,您使用send
派遣一個事件與此數據的路線。
save: function() {
var gradeId = this.get('newGrade');
var student = {
name: this.get('newName'),
address: this.get('newAddress')
};
this.send('createStudent', student, gradeId);
// other view related stuff
}
然後,可以從不同的控制器/視圖重新使用createStudent
事件。
那麼,爲每個路徑創建路由/控制器並讓創建Student是共享的一件事? – RyanHirsch
是的。還要注意事件泡泡,直到ApplicationController,讓他們有機會在路由上定義/定製'createStudent'事件,然後他們到達頂層Route。 –