2017-08-17 153 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

相關問題