2014-07-24 13 views
17

Próbuję zdefiniować zasób i trasę w ten sposób z Ember CLI.Jak poprawnie generować zasoby i trasy z Ember CLI

this.resource('events', function() { 
     this.route('view', { path: "/:id"}) 
    }); 

Gdy próbuję to: ember g resource events/view uzyskać to:

this.resource('events/view', { path: 'events/views/:events/view_id' }); 

Gdy próbuję to: ember g resource events oraz: ember g resource events/view

this.resource('events', { path: 'events/:events_id' }); 
this.resource('events/view', { path: 'events/views/:events/view_id' }); 

Gdy próbuję to: ember g resource events oraz: ember g route events/view

this.resource('events', { path: 'events/:events_id' }); 
this.route('events/view'); 

Czy jest jakiś sposób na zrobienie tego?

Odpowiedz

19

W tym momencie zagnieżdżone zasoby i trasy we wskazanym wzorze nie są automatycznie generowane z domyślnymi schematami znalezionymi w Ember CLI. Domyślne plany generują pliki szkieletowe i strukturę plików, a niektóre używają haka afterInstall do aktualizacji innych plików. Po tych domyślnych plany, jesteś właściwie generowanie następujące elementy:

ember g resource events 
    ember g route events/view 

Następnie można modyfikować Router.map w router.js ze swoim przeznaczeniem zagnieżdżania

Router.map(function() { 
     this.resource('events', function() { 
     this.route('view', { path: "/view/:id" }); 
     }) 
    }); 

Teraz powinno być w stanie trafić ' events/view/1 'w przeglądarce i zobacz trasy, których szukałeś na karcie Trasy Ember Inspector's.

Alternatywnie, można wykonać następujące czynności, i wygenerować własny plan:

ember generate blueprint nested-resource-route 

Katalog plan zostanie utworzony w katalogu głównym projektu z nowym planem wewnątrz. Korzystając ze schematów zasobów i tras jako podstawy, możesz rzucić własny generator, aby osiągnąć to, czego szukasz.

+0

Dziękuję za pisowni to wszystko na zewnątrz.Pracowałem nad problemami Ember 101, próbując znaleźć zasoby względem tras, szczególnie gdy chodziło o zagnieżdżanie, i to jest dokładnie to, czego potrzebowałem, aby rozwiązać problem i zrozumieć pierwotny problem. –

11

Zachowanie, którego pragniesz, jest możliwe w ember-cli w wersji 0.1.5 i późniejszych. Z release notes:

#2748 poprawie generator routera do wsparcia prawidłowo zagnieżdżony tras i zasobów, wcześniej jeśli miał drogę podobną jak:

Router.map(function() { 
    this.route("foo"); 
}); 

I zrobiłeś ember g route foo/bar wygenerowane trasy byłoby

Router.map(function() { 
    this.route("foo"); 
    this.route("foo/bar"); 
}); 

Teraz utrzymuje prawidłowo zagnieżdżone trasy, więc wynik będzie:

Router.map(function() { 
    this.route("foo", function() { 
    this.route("bar"); 
    }); 
}); 

Dodatkowo opcja --path dodano więc można zrobić rzeczy jak ember g route friends/edit --path=:friend_id/id tworzenia zagnieżdżonych trasą pod friends jak: this.route('edit', {path: ':friend_id/edit'})

Powiązane problemy