如何从另一个状态ctrl访问其他状态范围变量? 如果在' session.index.detail'状态,我想从rightPanel访问leftPanel范围变量Ctrl是否可能?我想要做的是我在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;
}]
}
}
}
});
答案 0 :(得分:3)
我认为最好的方法是创建一个包含您想要共享的数据的服务。
并在控制器之间共享。 或者使用广播在控制器之间进行通话,并通过这种方式传递数据
答案 1 :(得分:0)
最简单的方法是,你可以使用这样的事件。
单击“保存”时,您将执行此操作
$scope.$broadcast('myevent', data);
从rightCtrl和leftCtrl你可以做
$scope.$on('myevent', function(event,data) {
//do your updates here
})