Как добавить параметр в состояние `url` в angularjs

#angularjs

#angularjs

Вопрос:

Я пытаюсь добавить параметр в свое угловое приложение. на самом деле мое приложение будет динамически вызываться как :

 "https://abc.ss.com/xx/sn=1234568505
 

чтобы справиться с этим state — в моем $stateProvider — я пытаюсь так:

  .state('serialCreateCase', {
        url: '/sn=*', //but not working
        templateUrl:'abxy.html',
        controller: 'controllersss as ctrl',
        }
      })
 

Но мой URL не переадресовывает перенаправление на страницу по умолчанию. как добавить = параметр?

Ответ №1:

Попробуйте это:

 .state('serialCreateCase', {
  url: '^/sn={id}',
  params: {
    id: {}
  },
  templateUrl:'abxy.html',
  controller: 'controllersss as ctrl',
}
 

Это должно соответствовать URL, который вы ожидаете.

Редактировать: ответ был обновлен, чтобы изменить его на требуемые параметры.

Комментарии:

1. Но даже без id этого работает, http://localhost:3000/sn= — действует сейчас. Но я бы хотел, чтобы идентификатор был обязательным

2. Также id должно быть без специальных символов.

3. Я обновил ответ, чтобы включить требуемое значение параметра.

4. Но теперь id всегда требуется число. как я могу заставить это принимать как смешивание alphabets , так и числа? abc1234 or 1233ccm — вот так?

5. Вы можете слегка изменить его на «^ / sn ={id}», что не потребует, чтобы оно было целым числом (ответ отредактирован, чтобы отразить это)

Ответ №2:

Вы пробовали это: http://benfoster.io/blog/ui-router-optional-parameters

Параметры запроса

Чтобы параметры запроса отображались в объект $ stateParams маршрутизатора пользовательского интерфейса, вам необходимо объявить их в шаблоне URL вашей конфигурации состояния:

 state('new-qs', {
  url: '/new?portfolioId',
  templateUrl: 'new.html',
  controller: function($scope, $stateParams) {
     $scope.portfolioId = $stateParams.portfolioId;
  }
})
 

Затем вы можете создать ссылку на это состояние, используя атрибут ui-sref:

 <a ui-sref="new-qs({ portfolioId: 1 })">New (query string)</a>
 

Это приведет к переходу к /new?portfolioId=1 .

Если у вас есть несколько необязательных параметров, разделите их с помощью amp;:

 state('new-qs', {
  url: '/new?portfolioIdamp;param1amp;param2',
  templateUrl: 'new.html',
  controller: function($scope, $stateParams) {
     $scope.portfolioId = $stateParams.portfolioId;
     $scope.param1 = $stateParams.param1;
     $scope.param2 = $stateParams.param2;
  }
})
 

Ответ №3:

Вы могли бы добавить параметры следующим образом

 state('serialCreateCase', {
 url: '/xx?sn',
 templateUrl: 'abxy.html',
 controller: 'controllersss as ctrl',
 }
})
 

Состояние ref будет

 <a ui-sref="serialCreateCase({ sn: 1234568505 })">URL</a>
 

Комментарии:

1. Например, в моем локальном хосте: localhost:3000/sn=12345 — нужно обработать. но я попробовал ваш, все равно он переводит меня на страницу по умолчанию