Angularjs 从嵌套状态内的其他控制器访问范围变量

Angularjs 从嵌套状态内的其他控制器访问范围变量,angularjs,angular-ui-router,Angularjs,Angular Ui Router,如何从另一个状态ctrl访问其他状态范围变量? 如果处于“session.index.detail”状态,我想从rightPanel Ctrl访问leftPanel范围变量,是否可能?我想做的是在rightPanel中有一个表单,当我单击save时,我想将新的数据对象添加回leftPanel列表,并在成功添加到数据库后刷新它 .state('session', { abstract: true, templateUrl: '/schedule/_session.html

如何从另一个状态ctrl访问其他状态范围变量? 如果处于“session.index.detail”状态,我想从rightPanel Ctrl访问leftPanel范围变量,是否可能?我想做的是在rightPanel中有一个表单,当我单击save时,我想将新的数据对象添加回leftPanel列表,并在成功添加到数据库后刷新它

.state('session', {

      abstract: true,
      templateUrl: '/schedule/_session.html'
    })
    .state('session.index', {
      url: '/sessionmang',
      views: {
        'leftPanel@session': {
          controller: 'SessionCtrl',
          controllerAs: 'vm',
          templateUrl: '/schedule/_sessionPanel.html'
        },
        'rightPanel@session': {
          templateUrl: '/schedule/_sessionDetailPanel.html'
        }
      }
    })
    .state('session.index.detail', {
      params: {
        sessionObj: null,
        sessionTypeObj: null
      },
      views: {
        'rightPanel@session': {
          controller: 'SessionDetailCtrl',
          controllerAs: 'vm',
          templateUrl: '/schedule/_sessionDetailPanel.html',
          resolve: {
            sessionObj: ['$stateParams', function ($stateParams) {
              return $stateParams.sessionObj;
            }],
            sessionTypeObj: ['$stateParams', function ($stateParams) {
              return $stateParams.sessionTypeObj;
            }]
          }
        }
      }
    });

我认为最好的方法是创建一个保存您想要共享的数据的服务

并在控制器之间共享。
或者使用广播在控制器之间通话并通过这种方式传递数据最简单的方法是,您可以使用这样的事件

单击“保存”后,您将执行以下操作:
$scope.$broadcast('myevent',数据)
从右键Ctrl和左键Ctrl可以执行以下操作

$scope.$on('myevent', function(event,data) {
   //do your updates here
})

创建角度服务将是跨控制器共享数据的最佳选择。