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

时间:2016-08-13 22:48:28

标签: javascript angularjs

所以我在angularjs中访问$ routeParams中的值时遇到了一个奇怪的问题。

我在我的应用中设置路由

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

基本上,如果有3个路线,则会将其重新分配到yearmonthday

我的身体看起来像这样:

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

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

如果我这样做

console.log($routeParams);

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

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

这两个语句打印出来都是未定义的。发生了什么事?如何访问控制器中的year参数?

编辑:根据要求,这里的calController:

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

1 个答案:

答案 0 :(得分:0)

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

另请注意,console.log($routeParams);最初会显示一个空对象{},一旦参数准备就会填充。这发生在几毫秒之后。试试console.log(JSON.stringify($routeParams));,你会说服自己对象是空的。

这解释了您遇到的“怪异”行为。