У меня есть эта работа со следующей настройкой.
Маршрутизаторы с динамическим сегмента:
App.Router.map(function() {
this.resource('post.show', { path: '/post/:post_id' });
this.resource('comment.show', { path: '/post/:post_id/:comment_id' });
});
Переопределение serialize
крючок App.CommentShowRoute
для отражения URL ожидается:
App.CommentShowRoute = Ember.Route.extend({
serialize: function(model) {
return {
post_id : model.get("post_id"),
comment_id : model.get("id")
};
}
});
Основная проблема деле внедрения этого является URL генерируется, так как модель в serialize
hook, не загружен, post_id
собственности нет, и после того, как модель загружена, это не будет автоматически обновляться. Так что linkTo
, ориентированный на комментарий, будет иметь URL-адрес post/undefined/1
, а не post/1/1
. Щелчок по ссылке работает, потому что через некоторое время модель загрузится, но если пользователь обновит страницу, она не будет работать из-за неправильного URL-адреса.
Чтобы исправить это, я использовал подход 3 из this обсуждения на форуме, где мы используем вспомогательный помощник action
вместо linkTo
. Единственное отличие заключается в том, что ссылка не будет иметь свойство href` с URL-адресом, но при нажатии на все работает.
В результате:
App.PostShowRoute = Ember.Route.extend({
events : {
goToComment: function(context){
this.transitionTo('comment.show', context);
}
}
});
Вот demo с полной реализации.
Я ответил на ваш вопрос. Мой пример работает для вас? –
@ MárcioRodriguesCorreaJúnior Это скорее обходной путь для меня, чем решение. Однако в вашем примере JSbin комментарии не указаны, и я не могу подтвердить его работу. – p1100i
Да, это похоже на обходной путь, но я не нашел другого пути. И вы можете получить доступ к комментариям по адресу http://jsbin.com/ucanam/647#/post/1/1. Или нажмите ссылку Marcio здесь http://jsbin.com/ucanam/647#/post/1 –