Sie können nicht so leicht, weil tun, wenn Sie einen Link mit %2F
darin verwenden, wird der Browser für Sie entschlüsseln es gerade und es wird sein /
enden. AngularJS erlaubt derzeit nicht, /
in $route
params zu verwenden.
Sie können es doppelt kodieren, wie in diesem plnkr: http://plnkr.co/edit/e04UMNQWkLRtoVOfD9b9?p=preview
var app = angular.module('app', []);
app.controller('HomeCtrl', function ($scope, $route) {
});
app.controller('DirCtrl', function ($scope, $route) {
var p = $route.current.params;
$scope.path = decodeURIComponent(p.p1);
});
app.config(function ($routeProvider) {
$routeProvider
.when('/', {templateUrl: 'home.html', controller: 'HomeCtrl'})
.when('/dir/:p1', {templateUrl: 'dir.html', controller: 'DirCtrl'})
.otherwise({redirectTo: '/'});
});
Und der Link wäre: <a href="#/dir/a%252Fb%252Fc">click here</a>
.
Eine weitere Option, wenn Sie eine bestimmte Anzahl von /
Zeichen haben, kann in Ihren Parametern hier: How can I make the angular.js route the long path
Sie können derzeit nicht .. http://Stackoverflow.com/a/12685266/158502 - Sie können es hacken wie folgt, wenn Sie möchten: http://StackOverflow.com/a/16600968/158502 – Langdon
aber das/ist codiert, ich erstelle keine verschachtelten Komponenten. Nur eine Komponente - das könnte ein% 2F enthalten. Wenn das nicht funktioniert, scheint es ein Fehler zu sein, oder? – ConfusedNoob
Richtig, aber es ist urlencoded ... also, wenn Sie auf den Link klicken, der an die URL gebunden ist, wird es zu unencode gehen. Ich habe gerade bemerkt, dass du es tatsächlich doppelt kodieren kannst und am Ende mit% 2F in '$ route.current.params' enden wirst, das du selbst entschlüsseln musst. Verwende '% 252F'. – Langdon