получить параметр из URL в angularjs - PullRequest
0 голосов
/ 16 января 2020

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

Мой код:

.state('Admin.AddRecommendation',{
            url: "/AddRecommendation/:recoId",
            templateUrl: "views/AddRecommendation.html",
            params: {recoId:null},
})

controller. js:

 $scope.addRecommendation = function(){
        var id = $routeParams.recoId;
        console.log(id);

Так что, где я делаю это неправильно.

Спасибо

Ответы [ 2 ]

1 голос
/ 16 января 2020

Поскольку вы определяете recoId в URL, вам не нужно params: {recoId:null},

.state('Admin.AddRecommendation',{
            url: "/AddRecommendation/:recoId",
            templateUrl: "views/AddRecommendation.html"
})

Вы можете получить доступ к параметрам в контроллере, введя $stateParams

app.controller('MyController', ['$scope', '$state', '$stateParams', function($scope, $state, $stateParams) {
    $scope.addRecommendation = function(){
        var id = $stateParams.recoId;
        console.log(id);  
    }
}]);

Если вы используете компоненты, $stateParams не рекомендуется в пользу $transition$ Однако реализовать это не так просто: https://github.com/angular-ui/ui-router/issues/3110#issuecomment -271101827

В основном, Вы можете использовать его как

.component('foo', {
    bindings: { $transition$: '<' },
    controller: MyController,
    controllerAs: 'vm'
});

app.controller('MyController', ['$scope', '$state', function($scope, $state) {
    var vm = this;
    $scope.addRecommendation = function(){
        var id = vm.$transition$.params().recoId;
        console.log(id);  
    }
}]);
1 голос
/ 16 января 2020

Чтобы получить параметры запроса из URL при использовании ui-router, вы можете использовать

В вашем контроллере. js:

$state.params

Это даст вам все параметры в URL. Чтобы указать c параметр:

$state.params[<your-query-param>]

РЕДАКТИРОВАТЬ: В вашем вопросе вместо $routeParams используйте $state

...