所以我在angularjs中访问$routeParams中的值有一个奇怪的问题。
我在我的应用程序中设置路由为
app.config(function($routeProvider) {
$routeProvider
.when('/',{
templateUrl : './templates/main.html',
}).when('/:year/:month/:day',{
templateUrl : './templates/day.html',
}).otherwise({
redirectTo: '/'
});
});
基本上,如果有3个路由参数,那么它们被分配给year
, month
和day
。
我的身体是这样的:
<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));
,你会确信对象是空的。
这解释了你遇到的"奇怪的"行为。