Angular UI路由器-从其他状态访问statesparams

Angular UI router - acess stateParams from other state

本文关键字:状态 访问 statesparams 其他 UI 路由器 Angular      更新时间:2023-09-26

我是Angular的初学者,很抱歉我的英语不好。我发现了类似的问题和答案,但它对我的代码没有帮助…我想要这样的东西

.state('members.detail', {
            parent: "members",
            url: "/:id",
            templateUrl: "templates/members.detail.html",
            controller: 'membersDetailsController'
        })
.state('members.detail.fees', {
                parent: 'members.detail',
                url: '/fees',
                views: {
                  'items': {
                    templateUrl: 'templates/tabs/tab2-fees.html',
                    controller: 'Fees'
                  }
                }
        })

我也有这样的东西:

myapp.controller('membersDetailsController', function($scope, $http, $stateParams) {alert($stateParams.id);}

:

<a ui-sref=".fees" ng-class="{ active: $state.includes('members.detail.fees') }">Fees</a>

我需要id从第一个状态使用在第二个状态/费用控制器

注:有类似的问题,但没有帮助我(或不理解很好)Angular ui-router -如何访问参数嵌套,命名视图,从父模板传递?

你不能在模板中直接访问$state$stateParams,你需要将其绑定到作用域:

myapp.controller('Fees', function($scope, $http, $stateParams, $state) { $scope.params = $stateParams; $scope.currentState = $state; };

<a ui-sref=".fees" ng-class="{ active: params.id === someId }">Fees</a>

请注意,ui-router还支持ui-sref-active指令,你可以使用它来根据激活状态突出显示元素。

还要注意,嵌套的路由从它们的父路由继承状态参数。

你可以从所有子控制器访问它。像这样:

myapp.controller('Fees', function($scope, $http, $stateParams) {alert($stateParams.id);}

但是你的"ui-sref"属性有一个错误。它应该看起来像这样:

<a ui-sref="members.detail.fees({ id:1 })" ng-class="{ active: $state.includes('members.detail.fees') }">Fees</a>