次のようにAngular JSに「ルート」があります
$routeProvider.when('/foos/:fooId', { controller: FooController, templateUrl: 'foo.html'});
:fooId コンポーネントに '/' または '%2F' (エンコードされた形式) が含まれていない限り、うまく機能します。
どうすればこれを機能させることができますか?私の「fooId」には /s を含めることができますか?
次のようにAngular JSに「ルート」があります
$routeProvider.when('/foos/:fooId', { controller: FooController, templateUrl: 'foo.html'});
:fooId コンポーネントに '/' または '%2F' (エンコードされた形式) が含まれていない限り、うまく機能します。
どうすればこれを機能させることができますか?私の「fooId」には /s を含めることができますか?
Langdon の回答に基づいて、すべてを 2 回エンコードするフィルターと、デコードする別のフィルターを作成しました。
.filter('escape', function() {
return function(input) {
return encodeURIComponent(encodeURIComponent(input));
};
})
.filter('unescape', function() {
return function(input) {
return decodeURIComponent(input);
};
});
次のように、製品リンクでこれを使用します。
<a href="#/p/{{product.id}}/{{product.name | escape}}">
製品ページで、製品名をデコードします。
<h1>{{product.name | unescape}}</h1>