2013-02-12 63 views
0

我已經用路由器v2的emberjs用於一些用例,它的工作非常好。我通過點擊{{linkto ..}}結構(使用相關的嵌套資源)來增加頁面的複雜度。用例的emberjs方式是什麼:一條路由(路由器v2)應該顯示兩個模型?

但有時可能需要一次顯示兩個(或更多)不同的模型。

例如:

我有模型的人和模型寵物。

喜歡的東西:

DS.RESTAdapter.configure("plurals",{"person" : "people"}) 

App.Store = DS.Store.extend({ 
revision: 11, 
    adapter: DS.RESTAdapter.create({namespace: 'restservice'}) 
}); 

var attr = DS.attr; 

App.Person = DS.Model.extend({ 
firstName: attr('string'), 
lastName: attr('string'), 
birthDay: attr('string'), 
    pets: DS.hasMany('App.Pet') 
}); 


App.Pet = DS.Model.extend({ 
    name: attr('string'), 
    species: attr('string'), 
    person: DS.belongsTo('App.Person') 
}); 

對於型號人與寵物的某種原因情況存在,但是這兩種模式之間的關係尚未確定。

在一個通過{{linkto ..}}構造調用的頁面中,我想實現一個 人物分配編輯器。 在這種情況下,我想顯示兩個列表:

  • 寵物

通常該頁面的路線將僅對應於一個模型,但對人的名單列表 - 寵物分配編輯器,兩個模型應該一次顯示(沒有額外的用戶干預)是完全自然的。

什麼是最好的實現方式。 我應該加載沒有佈線概念的模型嗎?

確實存在的方式是這樣的:

 (represent the person - pet assigment editor 'page') 
         | 
         | 

{{linkto ..}} ------->資源路徑-----> '分裂重定向'

          - ----------------> resource-route person 

              - ----------------> resource-route pet 


    (like a url to a frame set which bear two (or more) 'parallel' requests) 

分裂重定向後,我有3條活動路線:對人

  • 資源路線 - 寵物分配新建分配FY編輯
  • 資源路線的人
  • 資源路由寵物

之後,正常的增量鑽(深嵌套的路線:選擇人,選擇的寵物。)行動可能會發生。

我可以實現我的用例沒有這樣的概念,但我喜歡路由的概念,並有興趣在更復雜的情況下使用它。

是否存在這樣的概念? 什麼是emberjs方式來處理這種情況?

問候

安德烈亞斯

回答

2

我不認爲分裂重定向是正確的想法。你走路由器太遠 - 這會讓事情變得比他們需要的更復雜。我建議你製作個人寵物作業的路線,並在那裏展示寵物和人物。這條路線的模型將是所有相關的寵物和人 - 仍然是2種模型。我不知道在model方法來指定2種型號的正確方法,因此,我建議加載它們在setupController

App.PetsToPersonRoute = Em.Route.extend({ 
    setupController: function (controller) { 
     controller.setProperties({ 
      pets: App.Pet.find(), 
      persons: App.Person.find() 
     }); 
    } 
}); 
相關問題