Получение значения из URL с помощью AngularJS

#javascript #angularjs

#javascript #angularjs

Вопрос:

Я знаю, что в Angularjs есть много способов сделать это. Например, с помощью $location и т.д.

Но я не могу найти, как получить значение, если URL выглядит так:

http://localhost:8000/test/1

Как получить значение один из этого URL?

Для маршрутизации я использую stateProvider:

 export default angular.module("examino.userTestSession", ["ui.router"])
    .config(function($stateProvider) {
        $stateProvider
            .state("testing", {
                url: "/test",
                controller: "UserTestSessionController",
                templateUrl: "./app/components/userTestSession/user-test-session.html",
                controllerAs: "vm"
            })
            .state("sessionExpired", {
                url: "/sessionExpired",
                controller: "UserTestSessionController",
                templateUrl: "./app/components/userTestSession/user-test-session-expired.html",
                controllerAs: "vm"
            });
    })
  

Могу ли я получить это значение при определении состояния «тестирование»?

Ответ №1:

Просто используйте параметры маршрута с :param

Маршруты

 export default angular.module("examino.userTestSession", ["ui.router"])
    .config(function($stateProvider) {
        $stateProvider
            .state("testing", {
                url: "/test/:id", //Add the parameter here
                controller: "UserTestSessionController",
                templateUrl: "./app/components/userTestSession/user-test-session.html",
                controllerAs: "vm"
            })
            .state("sessionExpired", {
                url: "/sessionExpired",
                controller: "UserTestSessionController",
                templateUrl: "./app/components/userTestSession/user-test-session-expired.html",
                controllerAs: "vm"
            });
    })
  

Контроллер

 var myId = $stateParams.id
  

Примечания

/test/:id будет совпадать /test/bob , /test/1235 и /test/ , но не /test или /test/bob/other

/test/{id} такой же, как и предыдущий

/test/{id:int} означает, что параметр интерпретируется как целое число

/test/{id:[0-9]{1,8}} означает, что идентификатор должен соответствовать предоставленному регулярному выражению