获取$ stateParams的未定义

时间:2017-04-19 14:16:02

标签: angularjs angular-ui-router

我正在尝试使用$stateParams将数据从一个控制器传递到另一个控制器但是获取null而不是有效数据:

请在下面找到我的路线代码:

.state("root.home", {
            url: "/home",
            abstract: true,
            template: homeHtml,
            controller: "HomeCtrl as ctrl",
        })
.state("root.home.content", {
            url: "",
            params: {
                userId: null,
            },
            views: homeView,
        })

控制器代码:

$state.go("root.home.content", {userId}); // getting correct UserId

HomeCtrl代码:

// In its constructure I injected the $stateParams

    init() {
            console.log($stateParams); // getting undefined here
            if ($stateParams && $stateParams.userId) {
                this.loadUser($stateParams.userId);
            }
        }

2 个答案:

答案 0 :(得分:1)

传递您的参数如下

$state.go("root.home.content", {'userId': userId}); 
//This userId should be a valid variable inside your Controller A

此外,您还应该编辑路由器,如下所示

.state("root.home.content", {
            url: "/:userId",
            params: {
                userId: null,
            },
            views: homeView,
        })

否则它不会显示在网址和广告中无法从$ stateParams访问

答案 1 :(得分:1)

我通过向父节点而不是子节点添加params来修复此问题。正确的代码是:

.state("root.home", {
                url: "/home",
                params: {
                    userId: null,
                },
                abstract: true,
                template: homeHtml,
                controller: "HomeCtrl as ctrl",
            })
.state("root.home.content", {
                url: "",
                views: homeView,
            })