Angularjs 具有嵌套路由的Ui路由器$stateParams

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

我正在尝试路由到一个url,其中选定对象的id值处于嵌套状态,但它不起作用

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对象将仅包含在该状态下注册的参数。因此,您将不会看到在其他州注册的参数,包括祖先。这是误导。或者,如果他使用父/子结构到他的状态,则需要在父状态上声明参数,以便子状态将继承这些参数,如果他使用父/子结构到他的状态,则这些参数将在子状态之间移动,然后需要在父状态上声明参数,以便子状态将继承它们,并在子状态之间移动