【问题标题】:Angular Modal Service unknown providerAngular 模态服务未知提供者
【发布时间】:2016-04-21 09:27:20
【问题描述】:

我正在尝试使 Angular 模态表单正常工作,但我总是收到未知的提供程序错误。我想我已经包含了所有必要的文件?

这是我调用服务的代码:

      function deleteConfirm() {
        var modalOptions = {
          closeButtonText: 'Cancel',
          actionButtonText: 'Delete Supplier',
          headerText: 'Delete ' + supplierName + '?',
          bodyText: 'Are you sure you want to delete this supplier?'
        };

        modalService.showModal({}, modalOptions).then(function(result) {
          if (result === 'ok') {
            alert("ok");
          }
        }, function(error) {
          alert("Error deleting");
        });
      }

这是服务的代码:

(function() {
  'use strict';

  modalService.$inject = '$uibModal';

  angular.module('plunker').factory('modalService', modalService);

  function modalService($uibModal) {

    var injectParams = ['$uibModal'];

    //var modalService = function($uibModal) {

    var modalDefaults = {
      backdrop: true,
      keyboard: true,
      modalFade: true,
      templateUrl: 'modal.html'
    };

    var modalOptions = {
      closeButtonText: 'Close',
      actionButtonText: 'OK',
      headerText: 'Proceed?',
      bodyText: 'Perform this action?'
    };

    this.showModal = function(customModalDefaults, customModalOptions) {
      if (!customModalDefaults) customModalDefaults = {};
      customModalDefaults.backdrop = 'static';
      return this.show(customModalDefaults, customModalOptions);
    };

    this.show = function(customModalDefaults, customModalOptions) {
      //Create temp objects to work with since we're in a singleton service
      var tempModalDefaults = {};
      var tempModalOptions = {};

      //Map angular-ui modal custom defaults to modal defaults defined in this service
      angular.extend(tempModalDefaults, modalDefaults, customModalDefaults);

      //Map modal.html $scope custom properties to defaults defined in this service
      angular.extend(tempModalOptions, modalOptions, customModalOptions);

      if (!tempModalDefaults.controller) {
        tempModalDefaults.controller = function($scope, $uibModalInstance) {
          $scope.modalOptions = tempModalOptions;
          $scope.modalOptions.ok = function(result) {
            $uibModalInstance.close('ok');
          };
          $scope.modalOptions.close = function(result) {
            $uibModalInstance.close('cancel');
          };
        };

        tempModalDefaults.controller.$inject = ['$scope', '$uibModalInstance'];
      }

      return $uibModal.open(tempModalDefaults).result;
    };
  }
}());

http://plnkr.co/edit/xNpbI42UJm8acODSOimR

感谢您的帮助

【问题讨论】:

  • modalService.$inject = '$uibModal' 更改为modalService.$inject = ['$uibModal']; $inject 需要是一个字符串数组。
  • 嗨,我试过了,但仍然得到 $uibModalProvider

标签: javascript angularjs bootstrap-modal


【解决方案1】:
angular.module('plunker').factory('modalService', modalService);
modalService.$inject = ['$uibModal'];

试试这个!

添加到主 app.js 依赖项 ['ui.bootstrap']

var app = angular.module('plunker', ['ui.bootstrap']);

【讨论】:

  • 嗨不仍然得到 $uibModalProvider
  • 您好 Dmytro 感谢您到目前为止的帮助,但我仍然遇到错误,没有模态表单工作。你能编辑我的 plunk 并尝试让它工作吗?
【解决方案2】:

您忘记在您的应用中包含“ui.bootstrap”。

只需像这样引导您的应用程序即可解决问题:

var app = angular.module('plunker', ["ui.bootstrap"]);

【讨论】:

  • 不,我已经尝试过了,但它不起作用,这是一个笨拙的地方,我已更改为您所说的内容,但仍然出现错误? plnkr.co/edit/xNpbI42UJm8acODSOimR
  • 您收到另一个错误,因为您有其他错误可能是因为您从未打开过 Angular 文档。
猜你喜欢
  • 2014-01-28
  • 1970-01-01
  • 2012-09-02
  • 2017-04-16
  • 2017-10-08
  • 2017-08-26
  • 2013-04-20
  • 1970-01-01
相关资源
最近更新 更多