EmberJS:replaceWith& link-to将URL中的斜杠更改为%2F

时间:2017-08-17 13:40:45

标签: javascript ember.js url-encoding

在我的ember应用程序中,我需要使用可能包含“/”的动态段。

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

其中:lecture_url可以是'new-article'或'lectures / article'字符串

如果我输入

localhost:4200/lectures/article

路由解析器检测模型并调用replaceWith,但URL更改为:

localhost:4200/lectures%2Farticle

此外,我尝试创建像

这样的链接
{{#link-to 'lecture' lecture.url}}smth{{/link-to}}

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

我该如何避免这种情况?

1 个答案:

答案 0 :(得分:0)

有一种方法可以用来解决这个问题,但我想根据你的代码注意一些我无法确定演讲是否包含在另一条路线中的方法。此方法使用通配符在URL中允许/。问题在于这是为了捕获通过根目录输入的所有内容。所以代码看起来像:

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

所以,如果放置了这条路线,这是正常的。但如果我们有:

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

现在我们遇到了问题,因为如果我们在网址中输入/folder,我们现在会进入'文件夹'路线,而不是讲座路线,但如果我们有

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

我们将以正确的讲座路线结束,但是网址将是/文件夹,因此如果用户回到此网址,他们将转到文件夹路线而不是讲座路线。

TLDR;

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