从 url in angularjs 获取参数

to get the parameter from the url in angularjs

我有一个页面添加推荐和编辑推荐的同一页面,当我点击添加推荐时,推荐 ID 在 URL 中为空,但是当我通过点击推荐进入页面时 link 它将显示推荐的相应 ID,在 URL 中显示,但如何从 URL 中获取该 ID 以使用它。

我的代码是:

.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);

所以我哪里做错了。

谢谢

在使用 ui-router 时,要从 URL 获取查询参数,您可以使用

在你的 controller.js:

$state.params

这将为您提供 URL 中的所有参数。获取特定参数:

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

编辑:在您的问题中,使用 $state

而不是 $routeParams

正如您在 url 中定义 recoId,您不需要 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);  
    }
}]);