所以我在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);
这两个语句打印出来都是未定义的。发生了什么事?如何访问控制器中的year参数?
编辑:根据要求,这里的calController:
app.controller('calController', function calController($scope, $routeParams) {
console.log($routeParams);
console.log($routeParams["year"]);
console.log($routeParams.year);
}
答案 0 :(得分:0)
从我看到的情况来看,calController
之外的ng-view
。这意味着控制器将在ui.router
有时间初始化之前运行。
另请注意,console.log($routeParams);
最初会显示一个空对象{}
,一旦参数准备就会填充。这发生在几毫秒之后。试试console.log(JSON.stringify($routeParams));
,你会说服自己对象是空的。
这解释了您遇到的“怪异”行为。