将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");
}
答案 0 :(得分:1)
您的动态细分/:seo_friendly_link
与斜杠不匹配,例如它将匹配/2015
但不匹配/2015/10
。
要匹配包含斜杠的整个路径,请将:
更改为*
:
Router.map(function(){
this.route("posts", {path: "/"});
this.route("post", {path: '/*seo_friendly_link'});
}