2017-08-17 12 views
0

私のアプリケーションでは、「/」を含む動的セグメントを使用する必要があります。 lecture_urlは私がEmberJS:replaceWith&link-urlのスラッシュを%2Fに変更する

localhost:4200/lectures/article 

を入力した場合、ルートリゾルバがモデルを検出し、replaceWithを呼ぶが、URLは「新品」または「講義/アーティクル」

のような文字列を指定できます

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

変更後:

localhost:4200/lectures%2Farticle 

さらに、

012のようなリンクを作成しようとしました
{{#link-to 'lecture' lecture.url}}smth{{/link-to}} 

リンクのhrefには講義%2も含まれています。

どうすればこの問題を回避できますか?

+1

動的URL ':lecture_url'値は' lectures/article'になりません。つまり、動的セグメントをもう1つ導入するか、ネストされたルートを作成する必要があるかもしれません。 – kumkanillam

答えて

0

これを解決するための方法はありますが、私は講義が別のルートに含まれているかどうかは分かりません。このメソッドは、ワイルドカードを使用して、URLに/を許可します。問題は、これがルートを過ぎて入力されたすべてを捕まえることを意味するということです。したがって、コードは次のようになります。

​​

これがルートに配置されていれば、これは正しく動作します。しかし、我々は持っている場合:

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

今、我々は、URLに/folderを入力した場合、我々は今、「フォルダ」のルートではなく、講義のルートに分類されますので、我々は問題を抱えているが、我々は

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

を持っている場合私たちは正しい講義ルートに終わるでしょうが、URLは/フォルダになります。ユーザーがこのURLに戻ると、講義ルートの代わりにフォルダルートに移動します。

TLDR;

は、ワイルドカード形式 '/ * path'を使用しますが、他のルートが重複していることに注意してください。 Ember Twiddle

関連する問題