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

Access scope variable from the other controller within the nested state

如何从另一个状态ctrl访问其他状态范围变量? 如果处于 'session.index.detail' 状态,我想从 rightPanel Ctrl 访问 leftPanel 范围变量是否可能?我想要做的是我在 rightPanel 中有一个表单,当我单击保存时,我想将新数据对象添加回 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', data); 从 rightCtrl 和从 leftCtrl 你可以做

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