Я пытаюсь создать маршруты с дополнительными параметрами; По-видимому, ui.route не обладает такой способностью (хотя ngRoute существует уже почти навсегда). Поэтому вместо того, чтобы я назначил их в качестве параметров запроса и я пытаюсь перевести их в соответствующую RESTful URL, который будет разобранной за $ stateParams:AngularUI urlRouterProvider.when динамическая маршрутизация с дополнительными параметрами
В синтаксисе ngRouter, я бы указать: /:resource/:collection?/:type?/:index?
В ui.router, Я указан как: /:resource?collection&type&index
и я пытался переводить его динамически с функцией, которая возвращает путь (пробовал как с .При() и с .rule()):
$urlRouterProvider
.when('' , '/index')
.when('/', '/index')
.when(urlMatcher.source , function convertToREST($match , $stateParams)
{
var params = [$match.resource];
if (angular.isDefined($match.collection)) params[1] = $match.collection;
if (angular.isDefined($match.type)) params[2] = $match.type;
if (angular.isDefined($match.index)) params[3] = $match.index;
var result = '/' + params.join('/');
return result;
})
.otherwise('/404');
выше не отображает представление (удалите третий .when(), и представление отобразится просто отлично).
И вручную:
$urlRouterProvider
.when('' , '/index')
.when('/', '/index')
.when('/:resource?collection' , '/:resource/:collection')
.otherwise('/404');
Это, по-видимому приводит к круговой итерации. Я получил эту ручную идею из примера приложения ui-router: state.js#L16. Единственное различие, которое я вижу, это то, что мой начинается с параметра, но я не понимаю, что это имеет значение.