我正在尝试使用$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);
}
}
答案 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,
})