Reputation: 43491
I ny view I have: <a ui-sref="app.file({path: file.path})">{{ file.path }}</a>
file.path
is html/hero-sidebar.html
My state is defined as:
.state('app.file', {
url: '/file/*path'
views:
repositoryView:
templateUrl: '/templates/app/_file.html'
})
But when I click the link, it goes to http://localhost:9001/app/file/html%252Fhero-sidebar.html
What I want is for it to go to http://localhost:9001/app/file/html/hero-sidebar.html
Is this possible using ui-router with AngularJS?
Upvotes: 1
Views: 826
Reputation: 136144
There is already logged issue in ui-router Github, you could found it here
In order to solve this you need to add this code inside your config which will take care of encoding and decoding of url.
you could override the built-in string type (which is performing the slash encoding) by registering your own replacement "string" type using below code
Code
app.config(['$urlMatcherFactory', '$stateProvider', function($urlMatcherFactory, $stateProvider) {
//$stateProvider.state() & other code here
function valToString(val) {
return val != null ? val.toString() : val;
}
function regexpMatches(val) { /*jshint validthis:true */
return this.pattern.test(val);
}
$urlMatcherFactory.type("string", {
encode: valToString,
decode: valToString,
is: regexpMatches,
pattern: /[^/]*/
});
}]);
Upvotes: 1