我试图在我的应用程序中实现忘记密码流,该密码流从用户收集一些信息并通过状态传递。
用户提交员工ID后,他们希望将重置代码发送到(电子邮件或电话),我将这两者发送到令牌状态:
$state.go("^.token", { employeeId: forgot.employeeid, resetType: forgot.resetType });
我的路由器很简单:
$stateProvider.state("authentication.forgot", {
url: "/login/forgot",
templateUrl: "partials/authentication/forgot.html",
controller: "ForgotController as forgot",
onEnter: function () { $(document).foundation(); }
});
$stateProvider.state("authentication.token", {
url: "/login/token",
templateUrl: "partials/authentication/token.html",
controller: "TokenController as token",
onEnter: function () { $(document).foundation(); }
});
这是我的令牌控制器:
app.controller("TokenController", function ($state, $stateParams, $timeout, Authentication) {
console.log($stateParams);
});
在我的令牌控制器中,$ stateParams最终成为一个空对象。
答案 0 :(得分:0)
您没有在$ stateProvider定义中指定任何参数,在$ stateProvider定义中放置url参数或定义params
参数。
url: "/login/token",
params: { object: {} },
templateUrl: "partials/authentication/token.html",
注意,而{}是对象的默认值,以防在状态转换中未指定参数,并且您可以通过$sateParams.object
答案 1 :(得分:0)
您必须在州声明中声明您尝试访问的参数。
$stateProvider.state("authentication.token", {
url: "/login/token?employeeId:[a-zA-Z0-9]*&resetType:[A-Z]",
templateUrl: "partials/authentication/token.html",
controller: "TokenController as token",
onEnter: function () { $(document).foundation(); }
});
然后,您可以通过$ stateParams在控制器中访问这些内容。