Angularjs 在另一个控制器中使用一个控制器

Angularjs 在另一个控制器中使用一个控制器,angularjs,angular-ui,angular-ui-bootstrap,Angularjs,Angular Ui,Angular Ui Bootstrap,该示例使用ModalDemoCtrl控制器内的ModalInstanceCtrl实现,如下所示: var ModalDemoCtrl = function ($scope, $modal, $log) { $scope.open = function () { var modalInstance = $modal.open({ ... controller: ModalInstanceCtrl, ... }); ... }; }

该示例使用ModalDemoCtrl控制器内的ModalInstanceCtrl实现,如下所示:

var ModalDemoCtrl = function ($scope, $modal, $log) {
  $scope.open = function () {

    var modalInstance = $modal.open({
      ...
      controller: ModalInstanceCtrl,
     ...
    });
    ...
  };
};

var ModalInstanceCtrl = function ($scope, $modalInstance, items) {
  ...

  $scope.ok = function () {
    $modalInstance.close($scope.selected.item);
  };
};
app.controller('ModalInstanceCtrl', ['$scope', '$modal', '$log',
 function ($scope, $modalInstance, items) {
  ...

  $scope.ok = function () {
    $modalInstance.close($scope.selected.item);
  };
}]);

app.controller('ModalDemoCtrl', ['$scope', '$modal', '$log', 'ModalInstanceCtrl',
 function ($scope, $modal, $log, ModalInstanceCtrl) {
  $scope.open = function () {

    var modalInstance = $modal.open({
      ...
      controller: ModalInstanceCtrl,
     ...
    });
    ...
  };
 }]);
尝试此方法时,将控制器注册为angular,如下所示:

var ModalDemoCtrl = function ($scope, $modal, $log) {
  $scope.open = function () {

    var modalInstance = $modal.open({
      ...
      controller: ModalInstanceCtrl,
     ...
    });
    ...
  };
};

var ModalInstanceCtrl = function ($scope, $modalInstance, items) {
  ...

  $scope.ok = function () {
    $modalInstance.close($scope.selected.item);
  };
};
app.controller('ModalInstanceCtrl', ['$scope', '$modal', '$log',
 function ($scope, $modalInstance, items) {
  ...

  $scope.ok = function () {
    $modalInstance.close($scope.selected.item);
  };
}]);

app.controller('ModalDemoCtrl', ['$scope', '$modal', '$log', 'ModalInstanceCtrl',
 function ($scope, $modal, $log, ModalInstanceCtrl) {
  $scope.open = function () {

    var modalInstance = $modal.open({
      ...
      controller: ModalInstanceCtrl,
     ...
    });
    ...
  };
 }]);
我得到以下错误:

Error: Unknown provider: ModalInstanceCtrlProvider <- ModalInstanceCtrl
是否可以在angular中嵌套这样的控制器?

您不需要将ModelInstanceCtrl注入您的ModalDemoCtrl。控制器定义应为

app.controller('ModalDemoCtrl', ['$scope', '$modal', '$log',
 function ($scope, $modal, $log) {
没有这个,它也应该能工作。如果它不尝试

 var modalInstance = $modal.open({
      ...
      controller: 'ModalInstanceCtrl',
     ...
    });
您不需要将ModelInstanceCtrl注入您的ModalDemoCtrl。控制器定义应为

app.controller('ModalDemoCtrl', ['$scope', '$modal', '$log',
 function ($scope, $modal, $log) {
没有这个,它也应该能工作。如果它不尝试

 var modalInstance = $modal.open({
      ...
      controller: 'ModalInstanceCtrl',
     ...
    });