未知提供者:ngDialogProvider

7
在我的app.js文件中,我有:
var app = angular.module("atlas", ["ngRoute", "ngDialog"]);

对于我的控制器,我有:

app.controller("nodeController", function ($scope, $http, ngDialog)

ngDialog 出现错误:

>Error: [$injector:unpr] Unknown provider: ngDialogProvider <- ngDialog <-nodeController

同时我已经引用了 cssjs 文件。

<link rel="stylesheet" href="~/Content/ngDialog-custom-width.css" />
<link rel="stylesheet" href="~/Content/ngDialog-theme-default.min.css" />
<link rel="stylesheet" href="~/Content/ngDialog-theme-plain.min.css" />
<link rel="stylesheet" href="~/Content/ngDialog.css" />

<script src="~/Scripts/jquery-2.1.3.min.js"></script>
<script src="~/Scripts/angular.js"></script>
<script src="~/Scripts/angular-route.js"></script>
<script src="~/Scripts/ngDialog.js"></script>

我尝试了stackoverflow上的所有答案,但它们都对我没用。


@dfsq,这就是所有的代码。问题在于当我不将ngDialog作为控制器参数使用时,一切正常(当我添加ngDialog作为参数时,就会出现错误),但是我想要用ngDialog来打开模态窗口。 - Disposer
1
这意味着没有ngDialog模块。请检查脚本是否已加载,路径是否正确,是否有错误。 - dfsq
2个回答

2
问题出在ngDialogProvider的配置上。
在执行var app = angular.module("atlas", ["ngRoute", "ngDialog"]);后,我们需要使用以下内容:
app.config(["ngDialogProvider", function (ngDialogProvider) {
    ngDialogProvider.setDefaults({
        className: "ngdialog-theme-default",
        plain: false,
        showClose: true,
        closeByDocument: true,
        closeByEscape: true,
        appendTo: false,
        preCloseCallback: function () {
            console.log("default pre-close callback");
        }
    });
}]); 

2

当我第一次尝试将ngDialog添加到我的应用程序中时,我遇到了同样的错误信息,并尝试了Disposer上面概述的ngDialogProvider修复方法。但对我没有起作用。然后我意识到我的应用程序被分成两个模块:一个顶层模块定义控制器,另一个核心模块定义带有一些较低级别代码的服务。我的代码是这样结构化的,因为我从angular-phonecat教程开始作为样板。我在控制器中注入了ngDialog,并尝试在服务中使用它。一旦我将注入修正为正确的模块,问题就得到了解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接