2016-02-16 3 views
0

Я пытаюсь создать пользовательскую модальную услугу для приема данных и создания модальных данных с этими входами; однако, я получаю неизвестную ошибку провайдера, является Угловой при передаче литерального идентификатора контроллера в controller свойство модального.Неизвестная ошибка провайдера, инъекция зависимостей, модальный контроллер

У меня есть инъекция зависимостей, работающая в другом месте в моем приложении; здесь это только неудача. Я знаю, есть ряд вопросов по SO, занимающихся этой проблемой; однако из тех, что я прочитал, я не могу найти более общий ответ, который мог бы начать указывать мне в правильном направлении.

Вот мой код услуги:

angular.module('app').service('CustomModalService', ['$uibModal', function ($uibModal) { 

    this.openCustomModal = function (size, title, message, action) { 
     var actionToPerformOnConfirm = action; 

     var modalInstance = $uibModal.open({ 
      templateUrl: 'templates/CustomModal.html', 
      controller: 'CustomModalInstanceController', 
      controllerAs: 'vm', 
      size: size, 
      resolve: { 
       content: function() { 
        return { 
         title: title, 
         message: message 
        }; 
       } 
      } 
     }); 

     modalInstance.result.then(function (actionToPerformOnConfirm) { 
      console.log('something happened'); 
     }.bind(this)); 
    }; 
}]); 

А вот модальный контроллер, обозначенный выше:

angular.module('app').controller('CustomModalInstanceController', function ($uibModalInstance, content) { 
    var vm = this; 

    vm.title = content.title; 
    vm.message = content.message; 

    $scope.confirmAction = function() { 
     $uibModalInstance.close(); 
    }; 

    $scope.cancelAction = function() { 
     $uibModalInstance.dismiss('cancel'); 
    }; 
}); 

Этого должно быть достаточно, насколько я понимаю, угловой. Все работает в этой службе, иначе, если ссылка на контроллер удалена.

Существует даже this question (большое суммирование всех вопросов, с которыми я столкнулся), что подтверждает документацию и многочисленные примеры, которые я видел в Интернете; Тем не менее, я все еще получаю неизвестную ошибку поставщика. Этот пользователь даже спрашивает same question (опять же, из того, что я вижу, мой код является ярким примером «правильного»)!

Чтобы показать, что оба находятся в том же каталоге, здесь картина структуры каталогов:

enter image description here

Где мне нужно, чтобы начать смотреть, чтобы решить эту проблему? Это проблема конфигурации приложения?

+0

неизвестных ошибки поставщика, как правило, из-за услуги или контроллера не найден, ваш сервис и контроллер в разных каталогах? –

+0

@ManuAntony они находятся в том же каталоге, здесь.Они выплевываются в миниатюрный файл. Будет ли размещать изображение структуры каталогов, если это полезно? – Thomas

+0

, что было бы полезно также, как ваше приложение объединяет контроллеры ?, от внешнего вида вашего контроллера не определено в вашем приложении, попробуйте перезагрузить среду разработки, если вы только что добавили контроллер –

ответ

1

Я собираюсь ответить на свой вопрос, благодаря Ману Антони за работу со мной. Проблема заключалась не в инжекции контроллера, а в том, что с параметрами, поставляемыми контроллеру.

В конце концов, это была синтаксическая ошибка с моей стороны.

Вот правильный синтаксис контроллера подписи (я добавил область для удовольствия):

angular.module('app').controller('CustomModalInstanceController', ['$scope', '$uibModalInstance', 'content', function ($scope, $uibModalInstance, content) { ... 
0

Когда я сталкиваюсь с этими проблемами, они очень расстраивают. Шаги, которые я предпринимаю для решения этих проблем, - это вернуться к тегу сценария в html и убедиться, что идентификатор совпадает с идентификатором templateUrl. Так вот я хочу показать вам, где я создаю мой модальность:

var editPatient = $uibModal.open({ //Here is where the modal gets created. you set the html page and the controller 
     templateUrl: 'EditPatientData.html', 
     controller: 'EditPatientData', 
     size: size, 
     resolve: { 
      data: function() { 
       return angular.copy(patientModel); 
      } 
     } 
    }); 

сейчас Ниже я показываю вам код в моем файле Html, который отображает в коде выше. Убедитесь, что идентификатор в теге скрипта в вашем js точно такой же. (Я предлагаю вам использовать копию и вставку, чтобы избежать орфографических ошибок.)

<script type="text/ng-template" id="EditPatientData.html"> 
    <div class="modal-header"> 
     <h3 class="modal-title">Edit Patient Data</h3> 
    </div> 
    <div class="modal-body"> 
    //whatever you want to display 
    </div> 
</script> 

Надеюсь, это ответит на ваш вопрос. Если вам нужна дополнительная помощь или более подробная спецификация, не стесняйтесь спрашивать. :)

+0

не уверен, что это разрешило бы это, как предлагалось OP ** Все работает в этой службе, иначе, если ссылка на контроллер удалена. **, я предполагаю, что контроллер виноват –

+0

@ManuAntony Когда я сталкиваюсь со многими из тех же проблем, о которых он говорит, это основные моменты, которые я ищу и пытаюсь исправить. Он должен попробовать, что я сказал, и посмотреть, что произойдет. – Jim

+0

@James вы можете разместить свой контроллер? У меня возникли проблемы с передачей данных из модальной службы контроллеру – Thomas

Смежные вопросы