註冊編組和解組數據的自定義類型。 Docs here:http://angular-ui.github.io/ui-router/site/#/api/ui.router.util。$ urlMatcherFactory
讓我們定義一個自定義類型。實現編碼,解碼,是和模式:
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);
}
現在定義網址參數作爲產品和定製型會做你映射:
$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>"
});
工作普拉克:http://plnkr.co/edit/wsiu7cx5rfZLawzyjHtf?p=preview
它是p可以使用自定義類型,所以大括號({)不是'%7B'在URL中的apper?參考這個問題我已經取得http://stackoverflow.com/questions/35204064/angular-ui-router-curly-brackets-etc-in-url – Devl11
如何用加號(+)替換空格?我嘗試用「+」改變「 - 」,但它不起作用。謝謝。 –