ui-router忽略状态参数

时间:2015-10-22 14:28:53

标签: angularjs angular-ui-router

我试图在我的应用程序中实现忘记密码流,该密码流从用户收集一些信息并通过状态传递。

用户提交员工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最终成为一个空对象。

2 个答案:

答案 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在控制器中访问这些内容。