当前位置: 首页 > 面试题库 >

Angular UI Bootstrap模式:[$ injector:unpr]未知提供程序:$ uibModalInstanceProvider

姚培
2023-03-14
问题内容

这有点奇怪。当我在线搜索此问题时,我看到许多页面的Google搜索结果和SO解决方案…但是似乎没有任何效果!

简而言之,我正在尝试实现AngularUI Bootstrap Modal。我不断收到以下错误:

错误:[$ injector:unpr]未知提供程序:$ uibModalInstanceProvider <-$ uibModalInstance
<-addEntryCtrl

这是我的HTML:

<nav class="navbar navbar-default">
  <div class="container">
    <span class="nav-col" ng-controller="navCtrl" style="text-align:right">
      <a class="btn pill" ng-click="open()" aria-hidden="true">Add New</a>
    </span>
  </div>
</nav>

这是我的控制器:

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

app.controller('navCtrl', ['$scope', '$uibModal', function($scope, $uibModal) {
  $scope.open = function() {
    var uibModalInstance = $uibModal.open({
      animation: true,
      templateUrl: 'addEntry/addEntry.html',
      controller: 'addEntryCtrl',
    });
  };
}]);

最后,这是我的模态代码:

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

app.controller('addEntryCtrl', ['$scope', '$firebaseObject', '$state', '$uibModalInstance', function($scope, $firebaseObject, $state, $uibModalInstance) {
  $scope.cancel = function() {
    $uibModalInstance.dismiss('cancel');
  };

  $uibModalInstance.close();
}]);

我尝试过的解决方案

  • 更新了Angular Bootstrap(版本:0.14.3)和Angular(v1.4.8)
  • 将uibModalInstance更改为modalInstance
  • 将$ uibModalInstance更改为modalInstance
  • 将我的addEntryCtrl放在我的ModalInstance中

有什么想法吗?现在已经将我推倒墙了将近2天。

编辑

我应该注意两件事:

1)当我从addEntry中删除$
uibModalInstance作为依赖项时,我的HTML表单提交按钮工作正常,并且表单看起来很完美。即使重定向正确发生(提交时)。问题仍然存在:模态仍然停留在屏幕上,并引发错误,即$
uibModalInstance未定义。这是有道理的,因为我将其作为依赖项删除了,但是我显然仍然需要在提交时使用该模式。

2)另外,我在应用程序的另一部分工作的代码几乎相同。唯一的区别是它通过工厂工作。否则,代码是相同的。因此,我确信我的依赖项全部存在并且版本正确。所以。抓狂
奇怪。

谢谢!


问题答案:

找到答案!与我的朋友偷走后,我们找到了答案。我想将其发布在这里,以防其他人阅读。

事实证明,我们在模态窗口中有一个ng-
controller,它位于div标签中,该标签包装了模态中的整个html表单。以前,当我们的表单不在模式中时(它具有单独的URL),此方法可以很好地工作,但由于某种原因,在表单中时它会中断。ng-
controller正在引用addEntryCtrl。删除后,该表格立即生效!



 类似资料:
  • 问题内容: 我正在尝试启动并运行AngularJS 1.2 RC2应用程序。目前,我一直在使用Angular Seed项目来尝试使我的应用程序启动并运行。不幸的是,Angular Seed项目使用的是v1.0.7。在Angular Seed项目中,我将依赖项更新为以下内容: 在app.js中,我具有以下内容: 当我运行此应用程序时,出现以下错误: 我已经阅读了其他一些回答,例如1)注入’ngrou

  • 问题内容: 我试图通过遵循工厂方法文档中的示例来构建自己的服务。我认为我做错了,因为我继续遇到未知的提供程序错误。这是我的应用程序代码,包括声明,配置和工厂定义。 编辑我现在添加了所有文件以帮助解决问题 编辑该错误的完整详细信息在下面,问题似乎与getSettings有关,因为它正在寻找getSettingsProvider,但找不到它 这些是我目前在我的应用程序中拥有的所有文件 app.js 这

  • 问题内容: 从AngularJS 1.0.7 升级到 1.2.0rc1 时收到此错误。 问题答案: ngRoute模块不再是核心文件的一部分。如果继续使用$ routeProvider,则现在需要在HTML中包括: API参考 您还必须为您的应用程序添加依赖项: 相反,如果您打算使用或类似方法,则只需 从模块中删除依赖项,然后将其替换为相关的选择提供者(例如)。然后,您将使用依赖项:

  • 问题内容: 我正在尝试“定制” mongolab示例以适合我自己的REST API。现在我遇到了这个错误,我不确定自己在做什么错: 这是我的控制器: 这是模块: 问题答案: 您的代码看起来不错,实际上,当将其复制并粘贴到示例jsFiddle中时,它可以正常工作(除了调用本身): http //jsfiddle.net/VGaWD/ 很难说发生了什么而没有看到更完整的示例,但是我希望上面的jsFid

  • 问题内容: AngularJS的新手,似乎无法找出此错误的含义。我发现其他一些人也有相同的错误,但似乎他们的问题与我的问题无关。 未知提供程序:AngularJS中的$ modalProvider <-$ modal错误 (似乎我有最新的ui-bootstrap版本) 其他所有问题似乎都与模态有关,但我似乎无法从该模态开始,因此我认为这些问题无关。请告诉我我是否错误以及情况如何: 使用Angula

  • 问题内容: 我将其他html文件作为模板包含在index.html中。为此,我正在使用ng-view指令。但是我遇到一个错误: 我使用的代码是: 这是控制器: 配置: 这是HTML: 我在哪里想念? 问题答案: 做完了 在大多数情况下,这将是angular-route的冲突,而angularjs存在冲突。之后,由于持续不断的循环请求,导致页面崩溃 每次看到“ /”,它都会重新重定向到同一页面,从而