Подтвердить что ты не робот

"необязательные" параметры в состояниях/представлениях AngularJS с ui-router

У меня есть вид поиска клиента, который по умолчанию просто загружает форму для имени и фамилии. Однако он может принимать эти параметры в качестве аргументов в URL-адресе. Конфигурация моего приложения содержит:

    $stateProvider
        .state({
            name:        "search",
            url:         "/search",
            templateUrl: "partials/customerSearch.html",
            controller:  "CustomerSearchCtrl"
        })
        .state({
            name:        "searchGiven",
            url:         "/search/:fn/:ln",
            templateUrl: "partials/customerSearch.html",
            controller:  "CustomerSearchCtrl"
        })

Это работает, но похоже, что у него нет лишних увольнений. Есть ли способ лучше? Это что-то $urlRouterProvider должно обрабатывать?

4b9b3361

Ответ 1

Здесь содержится проблема в утилите ui-router о дополнительных параметрах. На данный момент вы не можете указать их четким образом, но вы можете использовать регулярные выражения:

url: '/search{fn:(?:/[^/]+)?}'

или параметры запроса:

url: '/search?fn&ln'

Люди работают над этим, однако, поэтому я ожидаю, что желаемая функциональность приземлится где-то в будущем.

Ответ 2

Вы можете использовать:

$stateProvider
.state({
    name:        "searchGiven",
    url:         "/search/{fn}/{ln}",
    params: {
        fn: {value: 'foo'},
        ln: {value: 'bar'}
    },
    templateUrl: "partials/customerSearch.html",
    controller:  "CustomerSearchCtrl"
})

Ответ 3

Есть обновление, вы можете сделать это:

$stateProvider.state("foo", {
  url: "/search/{fn}/{ln}"
});

Так как nateabele прокомментировал вопрос о дополнительных параметрах: посмотреть здесь