这有点奇怪。当我在网上搜索这个问题时,我看到很多页面的谷歌结果和 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)另外,我在我的应用程序的另一部分工作的代码几乎相同。唯一的区别是它是通过工厂工作的。否则,代码是相同的。因此,我相信我的依赖项都在那里并且版本是正确的。所以。吓坏了。奇怪的。
谢谢!