Пустые параметры маршрутизатора пользовательского интерфейса в URL

Я конвертирую свое приложение из простого углового маршрутизатора в UI-Router. У меня есть маршрут, который имеет некоторые параметры, исходящие из поля поиска. В сервисе маршрутизатора, предоставленном Angular, если мы ищем пустое поле ввода, URL был перенаправлен на домашнюю страницу из-за функции в противном случае, но в UI-Router он идет к этому URL http://localhost:3000/#/resultPage//1 .

Я попытался использовать regex с параметрами, но это не сработало. Код, который я использую, упоминается ниже

              $urlRouterProvider.otherwise('/');

                .state("resultpage", {
                    url: "/resultPage/{searchParameter:[0-9a-zA-Z]+}/{pageParameter:[0-9]}",
                    templateUrl: "templates/resultpage.html",
                    controller: "resultController",

                })

Как я могу убедиться, что URL-адрес перенаправляется на домашнюю страницу, если какой-либо из парамеров опущен URL-адрес формы?

2 ответа

  1. Передайте переменные вместо прямого значения.
    Напримерurl: "/resultPage/:paramOne/:paramTwo", здесь paramOneи paramTwoнаходятся параметры, которые передаются из ui-sref.
    Теперь в controller добавьте $stateParamsинъекцию зависимостей, чтобы получить параметры url.

    app.controller('myCtrl', function($scope, $stateParams, $state){
        if(!$stateParams.paramOne || !$stateParams.paramOne){
           $state.go('', {}); // redirecting to '/'
        }
    })
    

    теперь пришло время задать имя состояния, к которому вы хотите получить доступ.

    бывший:

    <a ui-sref="resultPage( {paramOne: {searchParameter:[0-9a-zA-Z]+}, paramTwo: {pageParameter:[0-9]} })"