Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Angular ui-sref encode parameter

My router looks like that:

.state('project', {
        'url': '/project/*path',
        'controller': 'ProjectController',
        'templateUrl': '/pages/project.html',
    });

but when I use

ui-sref="project({path: mypath})"

with mypath=part1/part2 I expect the it to turn into /project/part1/part2 but instead i get /project/part1%252Fpart2.

How can I make it pass parameter without encoding it ?

like image 451
amitdar Avatar asked Jan 08 '15 20:01

amitdar


Video Answer


1 Answers

As it was described here, you need to declare custom variable type for URL param in order to have slashes not encoded. Quoting comment from github:

If you really don't want the slash encoded for you, register a custom type with your regexp and declare item_id to be your custom type, i.e., url: /{item_id:MyType}

function valToString(val) { return val != null ? val.toString() : val; }
function valFromString(val) { return val != null ? val.toString() : val; }
function regexpMatches(val) { /*jshint validthis:true */ return this.pattern.test(val); }
$urlMatcherFactory.type("MyType", {
  encode: valToString,
  decode: valFromString,
  is: regexpMatches,
  pattern: /[^/]+\/[^/]+/
});
like image 138
fracz Avatar answered Oct 14 '22 01:10

fracz