Angular UI Router - $ stateParams具有属性但无法访问它们

时间:2017-08-20 23:07:53

标签: javascript angularjs object angular-ui-router

所以我通过电子邮件发送一个链接到我的网站,其中有一个代码作为参数,如:

本地主机: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时,这里是我在控制台中获得的内容的捕获:

enter image description here

我也试过像$ stateParams [“code”]那样访问它,但仍然未定义。

我错过了一些明显的东西吗?谢谢!

2 个答案:

答案 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);     
    }
    });
});

然后访问它。