注册一个编组和解组数据的自定义类型。这里的文档:http: //angular-ui.github.io/ui-router/site/#/api/ui.router.util .$urlMatcherFactory
让我们定义一个自定义类型。实现encode、decode、is和pattern:
var productType = {
encode: function(str) { return str && str.replace(/ /g, "-"); },
decode: function(str) { return str && str.replace(/-/g, " "); },
is: angular.isString,
pattern: /[^/]+/
};
现在将自定义类型注册为“产品” $urlMatcherFactoryProvider
:
app.config(function($stateProvider, $urlRouterProvider, $urlMatcherFactoryProvider) {
$urlMatcherFactoryProvider.type('product', productType);
}
现在将您的 url 参数定义为产品,自定义类型将为您进行映射:
$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:http ://plnkr.co/edit/wsiu7cx5rfZLawzyjHtf?p=preview