我有一个奇怪的问题,我不明白:
我正在使用ui-router。为什么我在app.run()中的console.log时得到这个结果:
app.run(function ($state) {
console.log($state); // output: Object{params:{sitename:"mysite"},current:{...},... other properties}
console.log($state.params); // output: Object {}
首先我打印出$ state并且它有一个" params"属性是一个具有名为" sitename"的属性的对象。 然后我打印出$ state.params属性,它突然变空了。
任何人都能解释一下吗?
顺便说一句。也试过这个但结果相同
console.log($state["params"]); // output: Object {}
答案 0 :(得分:1)
我遇到了同样的问题。
基本上,console.log($state)
正在向$state
依赖项打印引用,但不是$ state的实际值。 (Read more here)
因此,当您尝试访问$state.params
时,它会返回undefined
。如果ui-router完成路由($state
之后),params
实际上会$stateChangeSuccess
。在这种情况下,我们将自定义数据附加到状态对象。 (read more about routing and attachment)
答案 1 :(得分:0)
我遇到了同样的问题。 我想可能是由于两件事: 1. $ stateParams在通话时不存在 2. $ stateParams与调用者无关。
无论如何,我解决了这个问题如下:
.run(['$rootScope', function ($rootScope) {
$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
$rootScope.toParams = toParams;
});
}])
并在我的对象$ rootScope.toParams:
中使用 params: {
page: $rootScope.toParams.page,
}