现在我有以下应用程序 - http://jsbin.com/okoxim/7/edit
它允许人们按名称或按类别浏览用户。如果按用户浏览,然后单击新用户,您将获得没有默认值的新表单,并且在保存后您将被定向到该用户详细信息。
当按类浏览时,我想提供添加新用户的选项,新表单应默认为选择新用户选项时打开的当前类,保存后,我们应该路由回已保存的类。
设置路由以促进这种情况的正确方法是什么,我应该如何重用现有的新控制器?
现在我有以下应用程序 - http://jsbin.com/okoxim/7/edit
它允许人们按名称或按类别浏览用户。如果按用户浏览,然后单击新用户,您将获得没有默认值的新表单,并且在保存后您将被定向到该用户详细信息。
当按类浏览时,我想提供添加新用户的选项,新表单应默认为选择新用户选项时打开的当前类,保存后,我们应该路由回已保存的类。
设置路由以促进这种情况的正确方法是什么,我应该如何重用现有的新控制器?
您可以使用自定义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
然后可以从不同的控制器/视图重用该事件。