如何在另一个控制器内使用一个控制器

时间:2015-10-14 14:48:29

标签: angularjs

我想在另一个内部使用一个控制器。我发现我可以使用角度服务$ controller。

这就是我的尝试:

.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

1 个答案:

答案 0 :(得分:1)

根据Angular-UI documentation,您无需使用$controller。您只需将控制器名称告知$uibModal服务,即为简单字符串。

在你的情况下:

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