這裏是我當前的代碼:
父控制器
vm.animationsEnabled = true;
vm.open = function (size) {
var modalInstance = $uibModal.open({
animation: vm.animationsEnabled,
templateUrl: 'app/entities/interview-stage/interview-stage-list-add-dialog.html',
controller: 'InterviewStageListAddDialogController',
controllerAs: 'vm',
size: 'cs',
});
modalInstance.result.then(function (selectedItem) { \t
\t vm.interviewPlanSetUp.push(selectedItem); \t
}, function() {
//$log.info('Modal dismissed at: ' + new Date());
});
};
模態控制器
沒有大的事情:我選擇一個值,並將結果傳回給父控制器
function save() {
\t
\t vm.selectedStage.rounds=vm.selectedRound;
\t $uibModalInstance.close(vm.selectedStage);
\t $scope.$emit('gorecruitApp:interviewStageUpdate', 'test');
}
這是工作的罰款。
然而,當我試圖通過UI -router要做到這一點,我不能訪問「父作用域」
我做了以下
.state('interview-stage.addStage',{
parent:'job-setup.new',
url:'/addStage',
data:{
authorities: ['ROLE_USER']
},
onEnter:['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) {
$uibModal.open({
templateUrl: 'app/entities/interview-stage/interview-stage-list-add-dialog.html',
controller: 'InterviewStageListAddDialogController',
controllerAs: 'modal',
scope: $scope,
backdrop: 'static',
size: 'cs',
resolve: {
// entity: ['InterviewStage', function(InterviewStage) {
// return InterviewStage.get({id : $stateParams.id}).$promise;
// }]
}
}).result.then(function() {
$state.go('job-setup.new', null, { reload: 'job-setup.new' });
}, function() {
$state.go('^');
});
}]
})
父控制器是連接到的控制器job-setup.new這是的父母interviewstage.addStage
我試過幾點建議。目前爲止沒有任何工作任何指針?
編輯:這裏是一個plunker:https://plnkr.co/edit/HJT1f1C23s2HQ2jTcy9p?p=preview
在這裏從模態返回的數據應該顯示在「局部/home.html」的
當你說「將結果傳遞迴父控制器」我假設你是通過「$ scope」來做到這一點的。$ emit('gorecruitApp:interviewStageUpdate','test');「由於您將vm.selectedStage傳遞到您的模式.close()爲什麼不在.result.then()中處理它? – jbrown
您可以創建一個plunker?狀態問題並不少見於angular-ui-router,但是如果沒有看到連貫的應用程序結構,就很難診斷,因爲plunker可以提供這些結果。 –
@jbrown「你正在將vm.selectedStage傳遞給你的模式.close()爲什麼不在.result中處理它.then()「:我這樣做,如果你從父控制器打開模式時看到我的代碼,UI路由器的挑戰是Modal的父範圍設置爲rootScope,所以$ scope。$ emit沒有被捕獲ParentController。我嘗試使用$ scope:scope在打開的選項。但它不工作。我會嘗試添加一個plunker –