2013-07-21 58 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。 –