這有點奇怪。當我在網上搜索這個問題時,我看到很多谷歌搜索結果和SO解決方案......但似乎沒有任何工作!
簡而言之,我試圖實現AngularUI Bootstrap模態。我不斷收到以下錯誤:
Error: [$injector:unpr] Unknown provider: $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();
}]);
我試過的解決方案:
- 更新兩個角度引導(版本:0.14.3)和角(V1.4.8)
- 改變uibModalInstance到modalInstance
- 改變$ uibModalInstance到modalInstance
- 把我addEntryCtrl我ModalInstance內
有什麼想法?這已經讓我長達近2天了。
*編輯*
我應該注意兩點:
1)當我刪除$ uibModalInstance從addEntry的依賴,我的HTML表單提交按鈕只是正常工作和形式看起來完美。即使重定向正確發生(提交後)。問題依然存在:模態仍然停留在屏幕上,並且拋出$ uibModalInstance未定義的錯誤。這是有道理的,因爲我把它作爲一個依賴關係去除了,但我顯然仍然需要這個模式在提交時關閉。
2)此外,我有幾乎相同的代碼在我的應用程序的另一部分工作。唯一的區別是它通過工廠工作。否則,代碼是相同的。因此,我確信我的依賴關係都在那裏,版本也是正確的。所以。嚇壞。奇怪。
謝謝!
這些代碼塊是否屬於IIFE?否則,你會覆蓋'app'變量(可能會很麻煩)。此外,你的第二個代碼塊包含一個未關閉的函數和數組。這可能是一個錯字,或者你只是省略了後面的部分,但你應該嘗試使問題中的代碼完整 – Phil
另外,我在(http://stackoverflow.com/q/33600137/283366)之前看到過這個相同的錯誤,但該問題沒有得到任何有用的答案。僅供參考,'$ uibModalInstance'在我的應用程序中正常工作 – Phil
您是否正在使用ui-bootstrap 0.14.2? '$ uibModalInstance'被加入0.14.3〜https://github.com/angular-ui/bootstrap/issues/4778 – Phil