javascript - 收到错误 [$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 中是不允许的吗?
解决方案
该$uibModalInstance
对象是由$uibModal
服务实例化的控制器的可注入对象。它不会注入由 $compile 服务实例化的控制器中。
来自文档:
$uibModal 的打开函数
选项参数
controller
(Type:function|string|array
, Example:MyModalController
) - 模态实例的控制器,可以是字符串形式的控制器名称,也可以是内联控制器函数,可选地包裹在数组表示法中以进行依赖注入。允许控制器作为语法。有一个特殊的$uibModalInstance
可注入来访问模态实例。
有关详细信息,请参阅
推荐阅读
- html - 为什么 display-flex 在 Safari 中不起作用。有什么办法可以解决这个问题吗?
- mysql - 每次从我的数据库中获取 10 个随机 ID
- node.js - 创建新项目时出现角度cli错误
- node.js - 在我的反应项目中安装 react-stripe-js 时出错
- json - 用 JQ 解析 JSON 并重构 JSON
- apache-spark - `AttributeError:模块'logging'在PySpark3中没有属性'Handler'
- c# - 使用 CheckBox MVVM 更改 WPF DataGrid 行背景颜色
- .net - Visual Studio:调试时找不到 ScriptLoggingBuilderExtensions.cs
- amp-html - 如何在 AMP 电子邮件中添加滚动到顶部按钮
- c# - .Net Core 3.1 - 加载扩展名为 .so.0 的本机库失败