将参数传递到ui-view

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控制器,而是加载到组件的控制器.这个组件的模板嵌套在其中我想拥有用户对象.

Ste*_*rov 3

我发现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