Ste*_*rov 6 angularjs angular-ui-router
我正在尝试将参数传递给嵌套的ui-view:
<ui-view user="user"></ui-view>
Run Code Online (Sandbox Code Playgroud)
现在让我解释一下为什么我需要这个.这就是我的ui的样子:
它是用户卡Angular组件.在这个组件内部有几个选项卡,例如具有自己状态的子组件.我的目标是从父状态为标签提供用户对象.
我还要展示一些简化的代码:
.state('user', {
url: '/user/:userId',
template: `<user user-id="userId"></user>`,
controller: ($scope, $stateParams) => {
$scope.userId = +$stateParams.userId;
}
})
...
.state('user.tab1', {
url: '/tab1',
template: '<tab1 user="$ctrl.user"></tab1>',
controller: ($scope, $state) => {
//I would like to get access to the user object here
let course = $scope.$ctrl.user;
}
});
Run Code Online (Sandbox Code Playgroud)
所以再一次:用户对象不是加载到ui-router控制器,而是加载到组件的控制器.这个组件的模板嵌套在其中我想拥有用户对象.
我发现ui-router 不会为子状态创建隔离范围,因此您可以通过以下方式轻松访问它们
$scope.$ctrl.youparentproperty
Run Code Online (Sandbox Code Playgroud)
就我而言,它是:
.state('user.tab1', {
url: '/tab1',
template: '<tab1 user="$ctrl.user"></tab1>',
});
Run Code Online (Sandbox Code Playgroud)
和例子,如果其他人遇到同样的问题 - https://plnkr.co/edit/9LSNtWWcom6ERZRBucXB?p=preview