7

In my app.js I have

var app = angular.module("atlas", ["ngRoute", "ngDialog"]);

for my controller I have

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

the ngDialog makes the error:

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

also I used refrenced css and js files

<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>

I tried all answers on stackoverflow and none of them work for me

andand
  • 17,134
  • 11
  • 53
  • 79
Disposer
  • 6,201
  • 4
  • 31
  • 38
  • @dfsq, this is all the code. the problem is when I'm not using ngDialog as parameter for controller, everything works fine (when I add the ngDialog as parameter, I get the error), but I want ngDialog for modal windows. – Disposer Apr 11 '15 at 09:29
  • 1
    It means that there is no module ngDialog. Check that script is indeed loaded, correct path, no errors/ – dfsq Apr 11 '15 at 09:29

2 Answers2

2

the problem was the config of ngDialogProvider

after var app = angular.module("atlas", ["ngRoute", "ngDialog"]);

we have to use:

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");
        }
    });
}]); 
Disposer
  • 6,201
  • 4
  • 31
  • 38
2

I experienced the same error message when I first tried to add ngDialog to my app, and I tried the ngDialogProvider fix outlined by Disposer above. It didn't work for me. Then I realised that my app was partitioned into two modules; a top level module defining the controller, and core module defining a service with some lower level code. My code is structured that way because I started with the angular-phonecat tutorial as boilerplate. I was injecting ngDialog into the controller, and attempting to use it in the service. Once I fixed the injection to be into the correct module the issue was resolved.

osullivj
  • 341
  • 1
  • 5