Registrare un tipo personalizzato che esegue marshalling e unmarshalls dei dati. Documenti qui: http://angular-ui.github.io/ui-router/site/#/api/ui.router.util. $ UrlMatcherFactory
Definiamo un tipo personalizzato. Implementare codificare, decodificare, è e modello:
var productType = {
encode: function(str) { return str && str.replace(/ /g, "-"); },
decode: function(str) { return str && str.replace(/-/g, " "); },
is: angular.isString,
pattern: /[^/]+/
};
ora registrare il tipo personalizzato come 'prodotto' con $urlMatcherFactoryProvider
:
app.config(function($stateProvider, $urlRouterProvider, $urlMatcherFactoryProvider) {
$urlMatcherFactoryProvider.type('product', productType);
}
Ora definire il vostro parametro url come un prodotto e il tipo personalizzato farà il mapping per voi:
$stateProvider.state('baseproductdetail', {
url: '/detail/{productName:product}-:productId/',
controller: function($scope, $stateParams) {
$scope.product = $stateParams.productName;
$scope.productId = $stateParams.productId;
},
template: "<h3>name: {{product}}</h3><h3>name: {{productId}}</h3>"
});
Plunk di lavoro: http://plnkr.co/edit/wsiu7cx5rfZLawzyjHtf?p=preview
fonte
2015-01-15 01:59:29
E 'p è possibile utilizzare i tipi personalizzati in modo che le parentesi graffe ({) non apper come '% 7B' nell'URL? Riferimento a questa domanda ho fatto http://stackoverflow.com/questions/35204064/angular-ui-router-curly-brackets-etc-in-url – Devl11
Come sostituire gli spazi con il segno più (+)? Ho provato a cambiare "-" con "+" ma non funziona. Grazie. –