Angular $injector:unpr with uibModal

Angular $injector:unpr with uibModal

本文关键字:with uibModal unpr injector Angular      更新时间:2023-09-26

代码几乎直接来自ui引导程序教程。我在主页上有一个按钮,点击一下打开模式窗口,但我在开发工具中收到的错误是:

Error: [$injector:unpr] Unknown provider: $uibModalInstanceProvider <- $uibModalInstance <- modalController

之后的每次点击都会在错误消息中添加一个modalController,就像一样

Error: [$injector:unpr] Unknown provider: $uibModalInstanceProvider <- $uibModalInstance <- modalController <- modalController

Error: [$injector:unpr] Unknown provider: $uibModalInstanceProvider <- $uibModalInstance <- modalController <- modalController <- modalController

home.js

'use strict';
angular.module('myApp')
  .controller('homeCtrl', ['$q', '$state', '$timeout', '$scope', '$http', '$filter',
  '$uibModal', function($q, $state, $timeout, $scope, $http, $filter, $uibModal){
$scope.open = function (size){
  var modalInstance = $uibModal.open({
    animation: $scope.animationsEnabled,
    templateUrl: 'app/main/searchModal.html',
    controller: 'modalController',
    size: size,
    resolve: {
      items: function () {
        return $scope.items;
      }
    }
  });
  modalInstance.result.then(function (selectedItem) {
    $scope.selected = selectedItem;
    }, function () {
  });
};
...

modalcontroller.js

'use strict';
angular.module('myApp')
.controller('modalController', ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) {
  $scope.items = items;
  $scope.selected = {
    item: $scope.items[0]
  };
  $scope.ok = function () {
    $uibModalInstance.close($scope.selected.item);
  };
  $scope.cancel = function () {
    $uibModalInstance.dismiss('cancel');
  };
  $uibModalInstance.close();
}]);

问题出在我们(库)的一端。当我们发布0.14.0并添加所有uib前缀时,我们错过了将其添加到modalInstance中。该问题在0.14.3中得到解决。

要在0.14.0-0.14.2中修复此问题,只需使用$modalInstance即可,并注意,当您升级到1.0时,您需要更改为$uibModalInstance,否则代码将再次弹出。

以下是GitHub上相关问题的链接。

一切看起来都是正确的。另一件需要检查的事情是确保angular ui引导库被注入到应用程序依赖项中:

angular.module('myApp', ['ui.bootstrap'])

您使用的是angular ui bootstrap版本,该版本的前缀发生了更改。0.14.0版本引入了"uib"前缀,1.0.0版本删除了对无前缀组件的支持。在版本0.14.0之前,$uibModalInstance是$modalInstance。