【问题标题】:Getting the error [$injector:unpr] Unknown provider: $uibModalInstanceProvider收到错误 [$injector:unpr] 未知提供者:$uibModalInstanceProvider
【发布时间】:2020-02-23 13:33:50
【问题描述】:

我有一个控制器 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?

Angular JS 不允许这样做吗?

【问题讨论】:

    标签: javascript html angularjs angular-ui-bootstrap


    【解决方案1】:

    以防万一这有助于处于相同情况的其他人。最好的解决方案是将此作为指令。然后制作另一个将加载第一个指令的模态指令。基本上会有一个&lt;edit-price&gt;&lt;edit-price-modal&gt; 指令仅限于元素类型('E')

    【讨论】:

      【解决方案2】:

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

      来自文档:

      $uibModal 的打开函数

      选项参数

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

      有关详细信息,请参阅

      【讨论】:

        猜你喜欢
        • 2016-02-29
        • 2017-04-25
        • 1970-01-01
        • 1970-01-01
        • 2015-01-25
        • 2016-03-26
        • 2014-07-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多