2015-10-14 105 views
1

我想在另一個控制器內使用一個控制器。我發現我可以使用角度服務$控制器。如何在另一個內部使用一個控制器

這是我曾嘗試:

.controller(
'UnplannedTasksController', 
[ 
'$location', 
'$uibModal', 
'$controller', 
'unplannedTasksService', 
'messages', 
function($location, $uibModal, $controller, unplannedTasksService, messages) { 
    var ctrl = this; 

    var modalInstanceCtrl = $controller('ModalInstanceCtrl'); 

    this.openModal = function(unplannedTask) { 
    var modalInstance = $uibModal.open({ 
     animation: false, 
     templateUrl: 'unplanned-tasks/unplanned-tasks-modal.html', 
     controller: modalInstanceCtrl, 
     controllerAs: 'mdCtrl', 
     size: 'lm', 
     resolve: { 
     object: function() { 
      return unplannedTask; 
     }, 
     title: function() { 
      return messages.unplannedTasks.deleteTitle; 
     }, 
     question: function() { 
      return messages.unplannedTasks.deleteQuestion + unplannedTask.partner.name; 
     } 
     } 
    }); 

    modalInstance.result.then(function(unplannedTask) { 
     ctrl.display.getUnplannedTasksBusyPromise = unplannedTasksService.removeUnplannedTask(unplannedTask.id).then(function(data) { 
     ctrl.searchUnplannedTasks(); 
     }); 
    }); 
    }; 
}]) 

這ModalInstanceCtrl是在另一個文件中,看起來像這樣:

.controller('ModalInstanceCtrl', function($modalInstance, object, title, question) { 

var ctrl = this; 
this.object = object; 
this.title = title; 
this.question = question; 

this.ok = function() { 
$modalInstance.close(ctrl.object); 
}; 

this.cancel = function() { 
$modalInstance.dismiss('cancel'); 
}; 
}) 

但我得到一個錯誤:

"Error: [$injector:unpr] Unknown provider: $modalInstanceProvider <- $modalInstance <- ModalInstanceCtrl ..." 

您能否提一些建議。謝謝。

[編輯] 有人嗎?請...

最好的問候,
mismas

+0

您注射 「$ modalInstance」 到您的ModalInstanceCtrl。 Angular不知道那是什麼。你可以添加代碼來聲明「$ modalInstance」是什麼嗎? – frosty

回答

1

按照Angular-UI documentation,你並不需要使用$controller。您只需將控制器名稱$uibModal服務作爲一個簡單字符串來告訴。

你的情況:

var modalInstance = $uibModal.open({ 
    controller: 'modalInstanceCtrl' 
    // + more params 
}); 
+0

謝謝。我不知道它是全局可見的(即使modalInstanceCtrl是在不同的文件中定義的)。非常感謝你。 – mismas

相關問題