I'm searching for a possibility to replace characters in the ui-sref, respecting the URL of a target.
.state('base.product.detail', {
url: 'detail/:productName-:productId/'
The URLs now look like:
Now:
http://localhost/detail/My%20Product%20Name-123456789/
Should:
http://localhost/detail/My-Product-Name-123456789/
I want to get rid of the %20 (which are also directly generated inside ui-sref="") and replace them with a minus (-).
Any ideas how to do that?
Regards, Markus
Very easy approach:
In the controller, where the ui-sref is used (or even better in a separate service):
In the template:
The routing itself wasn't changed, angular did the routing still correctly.
Register a custom type that marshalls and unmarshalls the data. Docs here: http://angular-ui.github.io/ui-router/site/#/api/ui.router.util.$urlMatcherFactory
Let's define a custom type. Implement encode, decode, is and pattern:
Now register the custom type as 'product' with
$urlMatcherFactoryProvider
:Now define your url parameter as a product and the custom type will do the mapping for you:
Working plunk: http://plnkr.co/edit/wsiu7cx5rfZLawzyjHtf?p=preview