Неизвестный поставщик: $uibModalInstanceProvider - Модифицированный пользовательский интерфейс Bootstrap

У меня проблема с мотивом UI Bootstrap.

В одном контроллере у меня есть это:

app.controller("tableCtrl",['$scope','$http','$uibModal','$log' ,function ($scope, $http,$uibModal,$log) {
  $scope.open = function (size,selectedUser) {
  var modalInstance = $uibModal.open({
    animation: $scope.animationsEnabled,
    templateUrl: 'myModalContent.html',
    controller:'ModalInstanceCtrl',
    size: size,
    resolve: {
      user: function () {
        return selectedUser;
      }
    }
  });
}]);

В другом случае у меня есть это:

app.controller('ModalInstanceCtrl',['$scope','$uibModalInstance','user', function ($scope, $uibModalInstance, user) {
  $scope.user = user;
  $scope.ok = function () {
    $uibModalInstance.close();
  };
}]);

myModalContent выглядит следующим образом:

<script type="text/ng-template" id="myModalContent.html">
    <div class="modal-header"><h1>EDIT</h1></div>
    <div class="modal-body"> 
        {{patient.patient_id}}
    </div>
    <div class="modal-footer">
        <button class="btn btn-primary" type="button" ng-click="ok()">OK</button>
    </div>
</script>

Я вызываю tableCtrl только в HTML и вызываю open функцию следующим образом:

<button class="btn btn-primary" ng-click="open('lg',patient)">Edit</button>

Когда я нажимаю кнопку редактирования, я получаю это исключение:

Unknown provider: $uibModalInstanceProvider <- $uibModalInstance

Я видел этот плункер, но он мне не помог.

Что не так?

Ответ 1

У меня была такая же проблема, поэтому из моего решения здесь вы могли бы решить свой сценарий

app.controller("tableCtrl",['$scope','$http','$uibModal','$log' ,function ($scope, $http,$uibModal,$log) {
  $scope.open = function (size,selectedUser) {
  var uibModalInstance = $uibModal.open({
    animation: $scope.animationsEnabled,
    templateUrl: 'myModalContent.html',
    controller:function($uibModalInstance ,$scope,user){
     $scope.ok = function () {
            $uibModalInstance.dismiss('cancel');
         };

    },
    size: size,
    resolve: {
      user: function () {
        return selectedUser;
      }
    }
  });
}]);

Ответ 2

У меня была та же самая проблема. обновление как библиотеки angular, так и ui-bootstap исправило мою проблему. Используйте bower для обновления ui-bootstrap, он предлагает версию angular, которая работает с ней. Надеюсь, я помог.

Ответ 3

Наличие функции контроллера, встроенного и внутри определения объекта uibModalInstance вызывало у меня такую ​​же проблему.

После обновления до 0,14.3, когда javascript был углублен, uibModalInstance выбрасывал неизвестный провайдер. Определение контроллера с помощью "app.controller" устраняет проблему.

Ответ 4

Идентифицированная проблема: мой контроль был повторно инициализирован с HTML-страницы. Убедитесь, что контроллер Modal инициализирован из одного места.

Ответ 5

Я обнаружил, что эта проблема возникла, когда я определил контроллер в шаблоне HTML, а не в вызове modal.open

Ответ 6

Различные версии angular -ui/boostrap имеют разные имена переменных инъектора.

Отъезд angular -ui/bootstrap example.