18

次のようにAngular JSに「ルート」があります

$routeProvider.when('/foos/:fooId', { controller: FooController, templateUrl: 'foo.html'});

:fooId コンポーネントに '/' または '%2F' (エンコードされた形式) が含まれていない限り、うまく機能します。

どうすればこれを機能させることができますか?私の「fooId」には /s を含めることができますか?

4

4 に答える 4

5

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>
于 2014-09-29T12:59:28.190 に答える