Проблема с установкой AngularJS с помощью Angular Bootstrap modal

Я интегрирую modal из Angular Bootstrap и пытаюсь адаптировать образец кода из здесь в мое приложение. Я получаю сообщение об ошибке: Error: [$injector:unpr] Unknown provider: $modalInstanceProvider <- $modalInstance

Что мне нужно сделать для работы $modalInstance? Я вижу из примера кода, что они написали его так, что он входит в область действия функции, но я не уверен, как писать вещи при цепочке контроллеров.

angular.module('myApp', ['ui.bootstrap']).
controller('ModalInstanceCtrl', function($scope, $modalInstance) {
}).
factory('AuthService', ['$http', '$rootScope', '$modal',
  function($http, $rootScope, $modal) {
    return {
      loginModal: function(callback) {
        var modalInstance = $modal.open({
          templateUrl: '/partials/main/signin',
          controller: 'ModalInstanceCtrl'
        });
        modalInstance.result.then(function(selectedItem) {
          $scope.selected = selectedItem;
        }, function() {});
      }
    };
  }
]);

Ответы

Ответ 1

Хорошо - проблема была на самом деле с моим шаблоном. Я изменил частичное из выборки:

<div ng-controller="ModalInstanceCtrl">
  <div class="modal-header">
    <h3>I am a modal!</h3>
  </div>
  <div class="modal-body">
    <ul>
      <li ng-repeat="item in items">
        <a ng-click="selected.item = item">{{ item }}</a>
      </li>
    </ul>
    Selected: <b>{{ selected.item }}</b>
  </div>
  <div class="modal-footer">
    <button class="btn btn-primary" ng-click="ok()">OK</button>
    <button class="btn btn-warning" ng-click="cancel()">Cancel</button>
  </div>
</div>

В то время как на самом деле мне нужно было удалить ссылку на ng-controller.

<div>
  <div class="modal-header">
    <h3>I am a modal!</h3>
  </div>
  <div class="modal-body">
    <ul>
      <li ng-repeat="item in items">
        <a ng-click="selected.item = item">{{ item }}</a>
      </li>
    </ul>
    Selected: <b>{{ selected.item }}</b>
  </div>
  <div class="modal-footer">
    <button class="btn btn-primary" ng-click="ok()">OK</button>
    <button class="btn btn-warning" ng-click="cancel()">Cancel</button>
  </div>
</div>

Я по-прежнему чувствую, что я спотыкаюсь с Angular, но это, похоже, делает трюк!

Ответ 2

Как показано в модальном примере angular ui, вам не нужно указывать элемент ng-controller. Вы можете указать атрибут контроллера при определении модальности.

    var modalInstance = $uibModal.open({
        animation: $scope.animationsEnabled,
        templateUrl: 'myModalContent.html',
        controller: 'ModalInstanceCtrl',
        resolve: {
            items: function () {
                return $scope.items;
            },
            dataModel: function () {
                return $scope.data;
            }
        }
    });