我正在使用bootstrap(版本0.11.0)升级现有模块/指令以使用bootstrap 2.3.0。我还需要向后兼容以支持版本0.11.0,因为该指令可以在我们使用0.11.0的其他地方使用。
该指令一直使用$modal
和$modalInstance
,现在分别为版本2.3.0 $uibModal
和$uibModalInstance
。
我正在使用以下方法,有条件地在模块中注入$uibModal
和$uibModalInstance
:
if ($injector.has('$modalInstance')) {
$modalInstance = $injector.get('$modalInstance');
} else {
$modalInstance = $injector.get('$uibModalInstance');
}
此方法适用于 $uibModal
, $uibModalInstance
。这是因为modalInstance
的提供者未定义。因此,最终会出现以下错误:
未知提供商:
$uibModalInstanceProvider
< -$uibModalInstance
有没有我可以在运行时选择$modalInstance
或$uibModalInstance
并注入相同的内容?
答案 0 :(得分:0)
您可以在代码中继续使用$modalInstance
。在映射注入时,您需要$uibModalInstance
指向$modalInstance
。同样适用于$uibModal
和$modal
。
angular.module('myApp').controller('modalCtrl', ['$scope', '$uibModalInstance',
function ($scope, $modalInstance) {
$modalInstance.doSomething = function(param) {
...
}
...
同样,您可以使用$injector
语法(因为您似乎使用它)