Получение ошибки [$ injector: unpr] Неизвестный поставщик: $ uibModalInstanceProvider - PullRequest
0 голосов
/ 28 октября 2019

У меня есть контроллер AddPrice, который я вызываю из экрана списка цен в виде всплывающего окна, используя вызов $ uibModal.open и передавая контроллер. Контроллер не определен в addPrice.html

addPrice.html

<div>
  <form>
    <!-- contains UI controls but controller is not mentioned in this page -->
  </form>
</div>

addPriceController.js


(function () {
    'use strict';

    var controllerId = 'addPriceController';

    angular.module('myApp').controller(controllerId, [
      '$scope',
      '$q',
      '$uibModalInstance',
      addPriceController]);

    function addPriceController(
        $scope,
        $q, 
        modalInstance) {

    }
}) ();

Приведенный выше сценарий работает нормально.

Теперь я хочу повторно использовать addPrice.html в другом экране ManagePrice.html как редактирование «на странице», а НЕ как всплывающее окно.

Я добавил следующее в ManagePrice.html:

<div ng-include src="'addPrice.html'"
     ng-controller="addPriceController">

Но я продолжаю получать следующую ошибку:

angular.js: 15018 Ошибка: [$ injector: unpr] Неизвестный поставщик: $ uibModalInstanceProvider <- $ uibModalInstance <- addPriceController </p>

Как я могу добавить $ uibModalInstance в этом сценарии?

ИЛИ

Разрешено ли это в Angular JS?

Ответы [ 2 ]

1 голос
/ 28 октября 2019

Объект $uibModalInstance - это инъекция контроллеров, созданных службой $uibModal. Он не внедряется в контроллеры, создаваемые службой $ compile.

Из документов DOC:

функция открытия $ uibModal

параметр option

  • controller (Тип: function|string|array, Пример: MyModalController) - Контроллер для модального экземпляра, либо имя контроллера в виде строки, либо встроенная функция контроллера, опционально обернутая взапись массива для внедрения зависимостей. Разрешает контроллер как синтаксис. Имеет специальный $uibModalInstance, который можно ввести для доступа к модальному экземпляру.

Для получения дополнительной информации см.

0 голосов
/ 30 октября 2019

В случае, если это помогает другим в такой же ситуации. Лучшим решением было бы сделать это директивой. Затем создайте другую модальную директиву, которая загрузит первую директиву. По существу, директивы <edit-price> и <edit-price-modal> ограничены типом элемента ('E')

...