2017-08-17 112 views
0

在我的余烬应用程序中,我需要使用可能包含“/”的动态段。EmberJS:replaceWith&link-将URL中的斜线更改为%2F

this.route('lecture', {path: '/:lecture_url'}); 

其中:lecture_url可以是字符串,如“新文章”或者如果我输入“讲座/条”

localhost:4200/lectures/article 

路线解析器检测模型,并呼吁replaceWith但网址是改为:

localhost:4200/lectures%2Farticle 

另外,然后我尝试创建链接,如

{{#link-to 'lecture' lecture.url}}smth{{/link-to}} 

链接的href也包含讲座%2Farticle。

我该如何避免这种情况?

+1

动态网址':lecture_url'值不能成为'讲座/文章'。这意味着您可能需要引入一个更多的动态段或创建一个嵌套的路线。 – kumkanillam

回答

0

有一种方法,你可以用来解决这个问题,但我想注意一些基于你的代码我无法真正知道讲座是否包含在另一条路线中。此方法使用通配符在url中允许/。问题在于,这意味着要捕获通过根目录输入的所有内容。所以代码如下所示:

​​

所以如果这样放置了这个工作正常的路线。但如果我们有:

this.route('lecture', { path: '/*path' }); 
this.route('folder', { path: '/folder' }); 

现在我们有一个问题,因为如果我们在U​​RL类型/folder我们现在会陷入“文件夹”的路线,而不是演讲的路线,但如果我们有

{{#link-to 'lecture' 'folder'}}Lecture:folder{{/link-to}} 

我们将在正确的演讲路线上结束,但URL将会是/文件夹,因此如果用户返回到此URL,他们将转到文件夹路由而不是演讲路线。

TLDR;

使用通配符格式'/ *路径',但要小心重叠其他路线。 Ember Twiddle

相关问题