Неизвестный поставщик: $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.