Angular $injector:unpr with uibModal
Angular $injector:unpr with uibModal
代码几乎直接来自 ui-bootstrap 教程。我的主页上有一个带有 ng-click 的按钮,用于打开模式 window,但我在开发工具中收到的错误是:
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();
}]);
一切看起来都是正确的。另一件要检查的事情是确保 angular-ui-bootstrap 库被注入到您的应用程序依赖项中:
angular.module('myApp', ['ui.bootstrap'])
并且您使用的 angular-ui-bootstrap 版本有前缀更改。 0.14.0 版引入了 'uib' 前缀,1.0.0 版移除了对无前缀组件的支持。在版本 0.14.0 之前,$uibModalInstance 是 $modalInstance.
问题出在我们(图书馆)这边。当我们发布 0.14.0 并添加所有 uib
前缀时,我们错过了将其添加到 modalInstance
。该问题已在 0.14.3 中修复。
要在 0.14.0 - 0.14.2 中解决此问题,只需使用 $modalInstance
即可,并注意当您升级到 1.0 时,您需要更改为 $uibModalInstance
否则代码将又吐了
Here's a link 到 GitHub 上的相关问题。
代码几乎直接来自 ui-bootstrap 教程。我的主页上有一个带有 ng-click 的按钮,用于打开模式 window,但我在开发工具中收到的错误是:
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();
}]);
一切看起来都是正确的。另一件要检查的事情是确保 angular-ui-bootstrap 库被注入到您的应用程序依赖项中:
angular.module('myApp', ['ui.bootstrap'])
并且您使用的 angular-ui-bootstrap 版本有前缀更改。 0.14.0 版引入了 'uib' 前缀,1.0.0 版移除了对无前缀组件的支持。在版本 0.14.0 之前,$uibModalInstance 是 $modalInstance.
问题出在我们(图书馆)这边。当我们发布 0.14.0 并添加所有 uib
前缀时,我们错过了将其添加到 modalInstance
。该问题已在 0.14.3 中修复。
要在 0.14.0 - 0.14.2 中解决此问题,只需使用 $modalInstance
即可,并注意当您升级到 1.0 时,您需要更改为 $uibModalInstance
否则代码将又吐了
Here's a link 到 GitHub 上的相关问题。