动态细分值

时间:2015-05-19 01:28:32

标签: javascript ember.js url-routing

刚刚开始使用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如何查找嵌套路线的值的解释。

1 个答案:

答案 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') };
  }
});

请参阅Dynamic Segments