2012-07-08 21 views
6

Son zamanlarda Ember Router ile fark ettiğim bir şey var, sadece yaprak rotalarına gitmesine izin veriyor - çocuk yolları olmayan rotalar.Neden Ember Router sadece yaprak rotalarına gitmeye izin veriyor?

Şimdi yanlış şeyler yapmadığım sürece tasarımda bir hata/hata gibi görünüyor. Bununla ben 3 sütun düzeni ile standart masaüstü e-posta istemcisi gibi (bir şey bir UI kurmak istiyorum,

Ben projeleri koleksiyonu var, her proje vardır birçok işbirlikçiler:

en böyle örnek bir şey alalım) solda bir proje listesi var, bir projeye tıklandığında orta sütun bir ortak çalışanların listesini gösterir ve bir ortak çalışanın üzerine tıklayarak detaylarını sağdaki sütuna yükler.

Şimdi yönlendirme ile bir projeye tıkladığınızda /projects/1 adresine ve ortak çalışanı tıklatırken /projects/1/collaborators/23 adresine gitmek istiyorum. İşte

iç içe rotanın ilk kısmını gösteren bir yönlendiricidir:

App.reopen(
    Router: Ember.Router.extend(
    enableLogging: true 
    location: 'hash' 

    root: Ember.Route.extend(
     index: Ember.Route.extend(
     route: '/' 

     redirectsTo: 'projects' 
    ) 

     projects: Ember.Route.extend(
     # This route is not routable because it is not a leaf route. 
     route: '/projects' 

     connectOutlets: (router) -> 
      # List projects in left column 
      router.get('applicationController').connectOutlet('projects', App.projects) 

     show: Ember.Route.extend(
      # This route is routable because it is a leaf route. 
      route: '/:project_id' 

      connectOutlets: (router, project) -> 
      # Render the project into the second column, which actually renders 
      # a list of collaborators. 
      router.get('projectsController').connectOutlet('project', project) 
     ) 
    ) 
    ) 
) 
) 

Eğer Kor updateRoute çünkü bu hattın root.projects.show geçiş kadar (URL ayarlamak) çağırmaz göreceğiniz gibi https://github.com/emberjs/ember.js/blob/master/packages/ember-routing/lib/routable.js#L81

Böyle bir şey yapan oldu mu? Bunu tasarlamak için daha iyi bir yolu var mı?

cevap

7

Bunu yapmanın en iyi yolu, bir "/" rotası olan root.projects.index durumuna sahip olmak ve başka bir şey olmamasıdır. Bu şekilde her sayfanın kendine özgü bir durumu vardır. (%). 3 sütun düzeni ile benzer bir şey yaptığımı söylüyorum ve ortadaki ve sağdaki sütunu yukarıdaki gibi rotalarla eşleştiriyorum ve sol sütunu paylaşılan bir düzende olası orta görünümlerin her birine ekliyorum.

+0

Teşekkürler Bradley, bu hile gibi görünüyor. – Ivan

+0

Çok zekice. Bahşiş için teşekkürler. – nembleton

+0

@BradleyPriest Bu konuda bir [soru] (http://stackoverflow.com/questions/11377498/ember-js-crud-scenarios-specifying-view-from-within-a-route) var. Emrah.Router'ı CRUD senaryoları ile nasıl kullanacağımı anlamakta zorlanıyorum. Bir bakabilir misin? – MilkyWayJoe

2

Bu sorunun çözüldüğünü düşünüyorum. Bir endeks olmaksızın ember rotaları kullanıyorum ve herhangi bir yaprak durumuyla karşılaşmadım. Neden bir endekse ihtiyacımız olduğunu araştırıyordum ve buraya indim. Dizin durumunu da kullanmanın başka bir nedeni var mı?

İlgili konular