Порядок параметров запроса не должен иметь значения для Angular UI Router - PullRequest
0 голосов
/ 03 ноября 2019

Я работаю над проектом AngularJS v1.5.8, в котором используется angular-ui-router. Маршруты настроены примерно так:

var myApp = angular.module('demoapp', ['ui.router']);

myApp.config(function($stateProvider) {
  $stateProvider
    .state('landing', {
      url: '/?paramOne&paramTwo&paramThree',
      template: '<h3>Landing Page with params.</h3>',
    })
    .state('landing.pageA', {
      url: '',
      template: '<h3>Landing Page A!</h3>',
    })
    .state('landing.pageB', {
      url: '',
      template: '<h3>Landing Page B!</h3>',
    })
    .state('error', {
      url: '/error',
      template: '<h3>Error Page!</h3>',
    });
  $urlRouterProvider.otherwise('/');
});

Для состояний landing параметры не всегда передаются в указанном порядке. И иногда один или несколько параметров опускаются. Другой сервис перенаправляет на это приложение и передает параметры запроса.

  • Есть ли способ сделать некоторые или все параметры необязательными?
  • Требуется только первый, и не должно иметь значения, если остальные пройдены?
  • Сделать порядок их передачи не имеет значения? Но по-прежнему отображать шаблон, указанный в состоянии landing.

1 Ответ

0 голосов
/ 03 ноября 2019

Есть ли способ сделать некоторые или все параметры необязательными?

Да.

Из документов:

Использование параметров без указания их в URL-адресах состояния

Вы все еще можете указать, какие параметры получать, даже если параметры не отображаются в URL-адресе. Вам необходимо добавить новое поле params в состояние и создать ссылки, как указано в разделе Использование параметров в ссылках

Например, у вас есть состояние.

.state('contacts', {
        url: "/contacts",
        params: {
            param1: null
        },
        templateUrl: 'contacts.html'
    })

Ссылка, которую вы создаете,

<a ui-sref="contacts({param1: value1})">View Contacts</a>

Для получения дополнительной информации см.

...