Я использую UrialJD ui-router для захвата моего URL-адреса и отправки двух параметров с этого URL-адреса на мой контроллер. Вот мои требования:Как использовать UL-маршрутизатор AngularJS захватить этот URL-адрес с помощью необязательного параметра?
- Первый параметром является обязательным числом (
id
) - Второго параметра является необязательной строкой (
slug
) - Этих два параметра разделены
/
- Я хочу это игнорировать любой одиночный завершающую
/
в настоящее время я делаю это:
$stateProvider.state('mystate',
{
url: '/mystate/{id:int}{slug:(?:/[^/]+)?}',
params: {
slug: {value: null}
},
templateUrl: 'partials/mystate.html',
controller: function($stateParams) {
console.log('$stateParams.id=',$stateParams.id, ' $stateParams.slug=',$stateParams.slug);
}
}
Для URL: mystate/1
Это правильно захватывает:
$stateParams.id=1, $stateParams.slug=null
Для URL: mystate/1/myslug
Это отражает неправильное значение для slug
:
$stateParams.id=1, $stateParams.slug=/asdad
Для URL: mystate/1/
Это ничего не захватить ,
Для URL: mystate/1/myslug/
Это ничего не фиксирует.
Как это записать, чтобы он правильно фиксировал все четыре вышеупомянутых URL-адреса, но не передает какой-либо из /
s на контроллер?
Спасибо! Где я могу вставить строку для '$ urlMatcherFactoryProvider'? Когда я вставил его прямо перед строкой $ stateProvider, я получил: 'Uncaught Error: [$ injector: modulerr] Не удалось создать экземпляр модуля myApp из-за: ReferenceError: $ urlMatcherFactoryProvider не определен' –
Вам нужно сначала ввести его в вашу конфигурационную функцию – iH8
Я отредактирую вопрос, чтобы ответить на этот вопрос. – mostruash