angularjsroute-provider

use routeprovider with variable with slashes


I have this url defined, /item/1231, but its possible to use a variable with slashes as itemID?

If my item id is 12/31, how could this work? does it have to be encoded into %2F?

/item/12/31

  $routeProvider.when('/item/:itemID', {
    templateUrl: 'item_view.html',
    controller: 'ItemControler'

From the doc:

Route path (matched against $location.path). If $location.path contains redundant trailing slash or is missing one, the route will still match and the $location.path will be updated to add or drop the trailing slash to exactly match the route definition.

path can contain named groups starting with a colon: e.g. :name. All characters up to the next slash are matched and stored in $routeParams under the given name when the route matches. path can contain named groups starting with a colon and ending with a star: e.g.:name*. All characters are eagerly stored in $routeParams under the given name when the route matches. path can contain optional named groups with a question mark: e.g.:name?.

For example, routes like /color/:color/largecode/:largecode*/edit will match /color/brown/largecode/code/with/slashes/edit and extract:

color: brown

largecode: code/with/slashes.

https://docs.angularjs.org/api/ngRoute/provider/$routeProvider

But I havent managed to make it work


Solution

  • Well, as the documentation says it just needs and * to be added to ignore slashes.

     $routeProvider.when('/item/:itemID*', {
        templateUrl: 'item_view.html',
        controller: 'ItemControler'