可以在“视图”中访问$ stateParams,但不能在控制器中访问

时间:2014-01-14 12:30:01

标签: javascript angularjs angular-ui-router

我正在浏览http://angular-ui.github.io/ui-router/sample/#/

中的AngularUI路由器示例应用

我想我一般都能理解发生了什么,并且能够为我的应用实现类似的功能。

我的问题是,您似乎可以从“查看”文件中访问$stateParams(例如https://github.com/angular-ui/ui-router/blob/master/sample/contacts.html - 它引用$stateParam),但是当我访问{{1}时在控制器中,它返回一个空对象。 (https://github.com/angular-ui/ui-router/blob/master/sample/states.js#L83

所以我想我要做的是通过$stateParams s在父视图控制器中访问子视图的状态,但它是一个空对象。

相反,我可以通过$stateParam来获得状态。

为什么?

2 个答案:

答案 0 :(得分:1)

这是设计使然,请参阅https://github.com/angular-ui/ui-router/wiki/URL-Routing#two-important-stateparams-gotchas

对我来说这似乎是一个好主意,如果你从一个祖先的子视图中访问状态参数,那么代码就不是很清楚了。

答案 1 :(得分:0)

您始终可以在父范围

中设置参数
$scope.setParams = function(params) {
    $scope.params = params
}

在子控制器中

$scope.ParentController.setChildViewParams($stateParam);