Ember.js New Router: uzyskiwanie dostępu do serializowanych obiektów z macierzystych dynamicznych segmentów tras
Było podobnekwestia już.
Zakładając następujące trasy:
App.Router.map(function (match) {
match('/').to('index');
match('/posts').to('posts', function (match) {
match('/').to('postsIndex');
match('/:post_id').to('post', function (match) {
match('/comments').to('comments', function (match) {
match('/').to('commentsIndex');
match('/:comment_id').to('showComment');
});
});
});
});
Czy można uzyskać dostęp do obupost_id
icomment_id
wShowCommentRoute
? W przeciwnym razie powinienem zapomnieć o klawiszach kompozytowych w moich modelach?
CzemuCommentsRoute#model(params)
iCommentsIndexRoute
argument jest zawsze pusty? Jak odzyskaćPost
komentarze kiedy?
Mójskrzypce.
Uruchom toprzykład też (jest dziennik konsoli pokazujący problem.
AKTUALIZUJ po pewnym dochodzeniu:
TylkoPostRoute
będzie miałparams.post_id
. TylkoShowCommentRoute
będzie miałparams.comment_id
i nie będzieparams.post_id
.
Jest to niedopuszczalne w przypadku aplikacji, w których modele mają klucze kompozytowe. W przypadku przejścia nashowComment
krok po kroku możemy uzyskaćComment
instancja:
App.ShowCommentRoute = Ember.Route.extend({
model: function(params) {
var post_id = this.controllerFor('post').get('content.id');
return App.Comment.find(post_id, params.comment_id);
}
});
Ale to nie zadziała, jeśli odwiedzimy bezpośrednio/posts/1/comments/1
. W tym przypadkuthis.controllerFor('post')
zawszeundefined
.
*IndexRoute
(PostRoute
iPostInderRoute
w tym przykładzie)Wkrótce nie można uzyskać modelu trasy nadrzędnej, gdybezpośrednio odwiedzając zagnieżdżona trasa.