1

现在我有以下应用程序 - http://jsbin.com/okoxim/7/edit

它允许人们按名称或按类别浏览用户。如果按用户浏览,然后单击新用户,您将获得没有默认值的新表单,并且在保存后您将被定向到该用户详细信息。

当按类浏览时,我想提供添加新用户的选项,新表单应默认为选择新用户选项时打开的当前类,保存后,我们应该路由回已保存的类。

设置路由以促进这种情况的正确方法是什么,我应该如何重用现有的新控制器?

4

1 回答 1

0

您可以使用自定义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然后可以从不同的控制器/视图重用该事件。

于 2013-07-22T03:39:10.310 回答