我是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才能在第二个状态/费用控制器中使用
P.S。关于这一点有类似的问题,但对我没有帮助(或者不太了解)Angular ui-router - how to access parameters in nested, named view, passed from the parent template?
答案 0 :(得分:4)
您无法直接在模板中访问$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指令,您可以根据活动状态突出显示元素。
另请注意,嵌套路由会从父项继承状态参数。
答案 1 :(得分:0)
嗯,您可以完全按照从所有子控制器中编写的方式访问它。 像这样:
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>
希望这会有所帮助。