2015-05-19 2 views
2

Просто начните с Ember и задайте вопрос о том, как обращаться с общим шаблоном.Значение динамического сегмента

У меня есть следующий router.js:

export default Router.map(function() { 
    this.resource('posts', function(){ 
    this.route('post', { path: "/:title" }); 
    this.route('new'); 
    }); 
}); 

Я интересно, как использовать значение заголовка поста как динамический сегмент так, что пост URLs отображаться как /posts/my-post-title-here

Я смущен в отношении того, к какой модели это просматривается, или если есть «разумный способ» справиться с этим общим паттером (помимо использования posts_id для динамического сегмента).

Все мои посты определяются маршруты/posts.js, так что я просто необходимо для поиска значения в этом маршруте внутри моего маршрутов/post.js маршрут, как это:

export default Ember.Route.extend({ 
    model: function(params) { 
    var posts = this.modelFor('posts') 
    return posts.findBy('title', params.title); 
    } 
}); 

I «Я вижу маршрут/posts /: title в моем инспекторе Ember, но в браузере ссылки не определены (/ posts/undefined).

{{#each model as |post|}} 
    {{#link-to "posts.post" model }} 
    <li>{{post.title}}</li> 
    {{/link-to}} 
{{/each}} 

Я хотел бы какие-либо советы о том, как правильно обращаться с этой ситуацией или объяснения о том, как угасающий ищет значения для вложенных маршрутов.

ответ

2

Вам нужно настроить сериалайзер на ваших маршрутов/post.js, как это:

// routes/post.js 

export default Ember.Route.extend({ 
    model: function(params) { 
    var posts = this.modelFor('posts') 
    return posts.findBy('title', params.title); 
    }, 
    serialize: function(model) { 
     return { post_slug: model.get('title') }; 
    } 
}); 

См Dynamic Segments

Смежные вопросы