Ember路由器可以转换到但不处理URL

时间:2015-10-29 21:39:21

标签: ember.js

将Ember 2.1.0与EmberData一起使用,我正在创建一个小型博客应用程序。它有两条路线

Router.map(function(){
  this.route("posts", {path: "/"});
  this.route("post", {path: '/:seo_friendly_link'});
}

seo_friendly_link看起来像这样

 /2015/10/28/my-blog-post-title/

在索引路线中,我会显示一个帖子列表,其中包含指向每个帖子的链接。如果我点击一个链接,Ember应用程序将转换到我点击的帖子,在浏览器中显示seo-friendly-url。我强调转换到 - 路由在Ember路由器中通过该方法。到目前为止一切正常。

问题:

但是,如果我在浏览器中删除/输入相同的url(而不是从主页上的链接转换到它),我会得到一个UnrecognizedURLError(在调用模型甚至beforeModel挂钩之前)这个帖子)。如果我将网址放入浏览器,路由将通过Ember路由器上的handleURL方法,如果我点击主页上的链接,则不会发生这种情况。所以我的Ember应用程序可以转换到我的seo_friendly_link,但不能处理该URL。

我不确定为什么。

问题:如何创建识别该链接的路线?

代码

Post模型中有一个名为

的属性
   seo_friendly_link: DS.attr('string')

/routes/post中,我调用serialize方法从模型属性

创建该参数
  serialize: function(model, params){
     seo_friendly_link: model.get("seo_friendly_link");
  }

1 个答案:

答案 0 :(得分:1)

您的动态细分/:seo_friendly_link与斜杠不匹配,例如它将匹配/2015但不匹配/2015/10

要匹配包含斜杠的整个路径,请将:更改为*

Router.map(function(){
  this.route("posts", {path: "/"});
  this.route("post", {path: '/*seo_friendly_link'});
}