从嵌套状态中的其他控制器访问范围变量
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
})
如何从另一个状态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
})