所以我通过电子邮件发送一个链接到我的网站,其中有一个代码作为参数,如:
本地主机:8080 /应用程序/ recover_password / 12345678
在我的路线配置中我有:
app.config(function($stateProvider, $urlRouterProvider, VIEWS_PREFIX) {
$urlRouterProvider.otherwise("/login");
$stateProvider.state("recover_password", {
url : "/recover_password/:code",
templateUrl : VIEWS_PREFIX + "recover_password_form_view.html",
controller : "login_controller"
});
});
app.run(function($rootScope, $stateParams, login_services) {
$rootScope.$on("$stateChangeStart", function(event, toState, toParams, fromState, fromParams) {
console.log($stateParams.code);
}
});
});
如果我尝试读取这样的参数,我会得到一个未定义的,但如果我读它们就像:
console.log($stateParams);
我实际上得到了一个带有代码的对象。
当我只记录$ stateParams时,这里是我在控制台中获得的内容的捕获:
我也试过像$ stateParams [“code”]那样访问它,但仍然未定义。
我错过了一些明显的东西吗?谢谢!
答案 0 :(得分:1)
好吧,似乎我必须使用$ stateChangeStart函数中的toParams
而不是$ stateParams。
正在与之合作。
答案 1 :(得分:0)
您需要在方法中注入$stateParams
,如下所示:
app.run(function($rootScope, $stateParams, login_services) {
$rootScope.$on("$stateChangeStart", function(event, toState, toParams, fromState, fromParams, $stateParams) {
console.log($stateParams.code);
}
});
});
然后访问它。