2013-07-21 31 views
1

两个路径现在我有以下应用程序 - http://jsbin.com/okoxim/7/edit正道建筑师将用户添加

它允许一个人通过名称或类浏览用户。如果用户浏览,并且您单击新用户,则您将获得没有默认值的新表单,保存后即可定向到该用户详细信息。

当按类浏览时,我想给出添加新用户的选项,新窗体应默认为选择新用户选项时保存的当前类,我们应该返回到类那被保存了。

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

回答

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事件。

+0

那么,为每个路径创建路由/控制器并让创建Student是共享的一件事? – RyanHirsch

+0

是的。还要注意事件泡泡,直到ApplicationController,让他们有机会在路由上定义/定制'createStudent'事件,然后他们到达顶层Route。 –