如何在升级到bootstrap版本2.3.0时使用$ injector.get()注入uibModalInstance

时间:2017-04-18 07:02:42

标签: angularjs twitter-bootstrap angular-ui-bootstrap

我正在使用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并注入相同的内容?

1 个答案:

答案 0 :(得分:0)

您可以在代码中继续使用$modalInstance。在映射注入时,您需要$uibModalInstance指向$modalInstance。同样适用于$uibModal$modal

angular.module('myApp').controller('modalCtrl', ['$scope', '$uibModalInstance',
    function ($scope, $modalInstance) {

        $modalInstance.doSomething = function(param) {
           ...
        }

        ...

同样,您可以使用$injector语法(因为您似乎使用它)