Angularjs 具有嵌套路由的Ui路由器$stateParams
我正在尝试路由到一个url,其中选定对象的id值处于嵌套状态,但它不起作用Angularjs 具有嵌套路由的Ui路由器$stateParams,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我正在尝试路由到一个url,其中选定对象的id值处于嵌套状态,但它不起作用 ROUTER: .state('sessions.editor', { url: '/editor/:id', templateUrl: 'views/editor.html', controller: 'EditorCtrl' }) CONTROLLER (EditorCtrl): $scope.theSession.$id = $stateParams.id; //$scop
ROUTER:
.state('sessions.editor', {
url: '/editor/:id',
templateUrl: 'views/editor.html',
controller: 'EditorCtrl'
})
CONTROLLER (EditorCtrl):
$scope.theSession.$id = $stateParams.id;
//$scope.session object is successfully returned with the $id property.
PREVIOUS CONTROLLER:
//when button is clicked
$state.go('sessions.editor');
但是,当我尝试将其设置为$stateParams时,id属性变得未定义。我在$scope.session上用另一个属性测试了它,当我尝试将其设置为$stateParams时,该属性也变得未定义
我认为问题与嵌套的状态有关。这是否正确?我认为您需要将参数键添加到UI路由器的状态,例如:
.state('sessions.editor', {
url: '/editor/:id',
controller: 'EditorCtrl',
templateUrl: 'views/editor.html',
params: {
id: {
value : '',//Default
squash: false
}
}
})
然后使用EditorCtrl中的现有实现,用于
$stateParams
我认为您需要为UI路由器的状态添加params键,例如:
.state('sessions.editor', {
url: '/editor/:id',
controller: 'EditorCtrl',
templateUrl: 'views/editor.html',
params: {
id: {
value : '',//Default
squash: false
}
}
})
然后在编辑器中为
$stateParams
使用现有的实现。是否在控制器中注入$stateParams?为什么要注入EditorCtrl
?这是psuedo代码吗?是,注入了$stateParams。在路由器中注入EditorCtrl是什么意思?您是否试图在状态转换时设置id值?如果是这样,请尝试$state.go('sessions.editor',{id:5})代码>成功了Shakib,谢谢你!谢谢你,朱索皮。你的一句话澄清了不止几页的阅读内容。因此,定义子状态在其自身级别使用的参数是没有用的。它们只能在父级定义。请参阅此处的文档:>重要$stateParams Gotcha>在状态控制器中,$stateParams对象将仅包含在该状态下注册的参数。因此,您将不会看到在其他州注册的参数,包括祖先。这是误导。还是你在控制器中注入$stateParams?为什么要注入EditorCtrl
?这是psuedo代码吗?是,注入了$stateParams。在路由器中注入EditorCtrl是什么意思?您是否试图在状态转换时设置id值?如果是这样,请尝试$state.go('sessions.editor',{id:5})代码>成功了Shakib,谢谢你!谢谢你,朱索皮。你的一句话澄清了不止几页的阅读内容。因此,定义子状态在其自身级别使用的参数是没有用的。它们只能在父级定义。请参阅此处的文档:>重要$stateParams Gotcha>在状态控制器中,$stateParams对象将仅包含在该状态下注册的参数。因此,您将不会看到在其他州注册的参数,包括祖先。这是误导。或者,如果他使用父/子结构到他的状态,则需要在父状态上声明参数,以便子状态将继承这些参数,如果他使用父/子结构到他的状态,则这些参数将在子状态之间移动,然后需要在父状态上声明参数,以便子状态将继承它们,并在子状态之间移动