刚刚开始使用Ember并且对于处理常见模式的ember方式有疑问。
我有以下router.js:
export default Router.map(function() {
this.resource('posts', function(){
this.route('post', { path: "/:title" });
this.route('new');
});
});
我想知道如何将帖子标题的值用作动态细分,以便帖子网址显示为/posts/my-post-title-here
我很困惑这个模型正在被查看,或者是否有" ember方式"处理这种常见的模式(除了使用动态段的posts_id)。
我的所有帖子都在routes / posts.js中定义,所以我想我只需要在我的routes / post.js路由中查找此路由中的值,如下所示:
export default Ember.Route.extend({
model: function(params) {
var posts = this.modelFor('posts')
return posts.findBy('title', params.title);
}
});
我在Ember检查器中看到/ posts /:title路径,但在浏览器中,链接都是未定义的(/ posts / undefined)。
{{#each model as |post|}}
{{#link-to "posts.post" model }}
<li>{{post.title}}</li>
{{/link-to}}
{{/each}}
我喜欢关于处理这种情况的正确方法的任何建议,或者关于Ember如何查找嵌套路线的值的解释。
答案 0 :(得分:2)
您需要在routes / 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') };
}
});