Angularjs:无法访问$routeParams中的单个元素,但可以作为一个整体访问它



所以我在angularjs中访问$routeParams中的值有一个奇怪的问题。

我在我的应用程序中设置路由为

app.config(function($routeProvider) {
    $routeProvider
        .when('/',{
            templateUrl : './templates/main.html',
        }).when('/:year/:month/:day',{
            templateUrl : './templates/day.html',
        }).otherwise({
          redirectTo: '/'
        });
});

基本上,如果有3个路由参数,那么它们被分配给year, monthday

我的身体是这样的:

<body ng-controller="calController">
    <div ng-view></div>
</body>

现在,在calController中,我想访问routeparams;

如果我这样做

console.log($routeParams);

在calController中,它成功地以json格式打印出参数。但是,如果我尝试

console.log($routeParams["year"]);
console.log($routeParams.year);

这两个语句都输出undefined。这是怎么呢如何在控制器中访问year参数?

编辑:按要求,这里是calController:

app.controller('calController', function calController($scope, $routeParams) {
    console.log($routeParams);
    console.log($routeParams["year"]);
    console.log($routeParams.year);
}

从我看到的,你在ng-view之外有calController。这意味着控制器将在ui.router有时间初始化之前运行。

还要注意,console.log($routeParams);最初显示一个空对象{},一旦参数准备好,该对象就会被填充。这在几毫秒后发生。试试console.log(JSON.stringify($routeParams));,你会确信对象是空的。

这解释了你遇到的"奇怪的"行为。

最新更新