首页 > 解决方案 > 收到错误 [$injector:unpr] Unknown provider: $uibModalInstanceProvider

问题描述

我有一个控制器 AddPrice,我使用 $uibModal.open 调用并传入控制器,从价格列表屏幕中调用它作为弹出窗口。控制器未在 addPrice.html 中定义

addPrice.html

<div>
  <form>
    <!-- contains UI controls but controller is not mentioned in this page -->
  </form>
</div>

addPriceController.js


(function () {
    'use strict';

    var controllerId = 'addPriceController';

    angular.module('myApp').controller(controllerId, [
      '$scope',
      '$q',
      '$uibModalInstance',
      addPriceController]);

    function addPriceController(
        $scope,
        $q, 
        modalInstance) {

    }
}) ();

上述场景工作正常。

现在我想在不同的 ManagePrice.html 屏幕中重用 addPrice.html 作为“页内”编辑,而不是作为弹出窗口。

我在 ManagePrice.html 中添加了以下内容:

<div ng-include src="'addPrice.html'"
     ng-controller="addPriceController">

但我不断收到以下错误:

angular.js:15018 错误:[$injector:unpr] 未知提供者:$uibModalInstanceProvider <- $uibModalInstance <- addPriceController

在这种情况下如何注入 $uibModalInstance ?

或者

这在 Angular JS 中是不允许的吗?

标签: javascripthtmlangularjsangular-ui-bootstrap

解决方案


$uibModalInstance对象是由$uibModal服务实例化的控制器的可注入对象。它不会注入由 $compile 服务实例化的控制器中。

来自文档:

$uibModal 的打开函数

选项参数

  • controller (Type: function|string|array, Example: MyModalController) - 模态实例的控制器,可以是字符串形式的控制器名称,也可以是内联控制器函数,可选地包裹在数组表示法中以进行依赖注入。允许控制器作为语法。有一个特殊的$uibModalInstance可注入来访问模态实例。

有关详细信息,请参阅


推荐阅读