关于javascript:在angularjs中将$ dialog注入错误

error injecting $dialog in angularjs

我想显示angularjs controller中的dialog。 我正在使用angular-ui和angular-strap

在Controller中注入$ dialog时,出现以下错误:

1
2
3
4
5
6
7
8
9
10
11
Error: [$injector:unpr] http://errors.angularjs.org/1.2.0rc1/$injector/unpr?p0=%24dialogProvider%20%3C-%20%24dialog
    at Error ()
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular.min.js:6:450
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular.min.js:31:145
    at Object.c [as get] (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular.min.js:28:296)
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular.min.js:31:213
    at c (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular.min.js:28:296)
    at d (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular.min.js:28:473)
    at Object.instantiate (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular.min.js:30:123)
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular.min.js:58:153
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular.min.js:46:383

我的ApplicationResources.groovy

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
     angularJs { resource url:'https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular.min.js' }
     angularUI {
            dependsOn 'angularJs'
            dependsOn 'jquery'
            dependsOn 'googleMaps'
            resource url:'https://cdnjs.cloudflare.com/ajax/libs/angular-ui/0.4.0/angular-ui.min.css',attrs:[rel:"stylesheet", type:'css']
            resource url:'https://cdnjs.cloudflare.com/ajax/libs/angular-ui/0.4.0/angular-ui.min.js'
            resource url:'https://cdnjs.cloudflare.com/ajax/libs/angular-ui/0.4.0/angular-ui-ieshiv.min.js'
          }
     angularStrap {
         dependsOn 'angularJs'
         dependsOn 'bootstrapJs'
         dependsOn 'datepicker'
         resource url: 'https://cdnjs.cloudflare.com/ajax/libs/angular-strap/0.7.4/angular-strap.min.js'
         resource url: 'js/angular-strap/datepicker.js'
         resource url: 'js/angular-strap/timepicker.js'
     }
     userJs { resource url:'js/user.js' }

我的user.gsp

1
2
3
4
5
6
<html ng-app="user">

    <r:require modules="bootstrapJs" />
    <r:require modules="userJs" />
    <r:require modules="angularJs" />
</html>

我使用angular-ui的ui.bootstrap.dialog的EncouragementController.js是

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 function EncouragementController($scope, $http, $dialog, encouragementService) {
          //
    $scope.showMessage = function(message){
        var title = 'Alert';
        var msg = message;
        var btns = [{result:'cancel', label: 'Cancel'}, {result:'ok', label: 'OK', cssClass: 'btn-primary'}];

        $dialog.messageBox(title, msg, btns)
          .open()
          .then(function(result){
        });
     };
    }
 EncouragementController.$inject = [ '$scope', '$http', '$dialog', 'encouragementService' ];

我的app.js

1
var user = angular.module('user', [ 'ui', '$strap.directives' ]);

我关注了angular js未知提供程序,但没有答案对我有用。


AngularStrap没有$dialog服务。 如果要使用AngularStrap的模态服务,请将其更改为$modal

AngularUI确实具有$dialog服务。 但是要使用它,必须将ui.bootstrap模块链接到您的应用程序。

1
angular.module('user', [ 'ui', '$strap.directives', 'ui.bootstrap']);

$ modal和$ dialog具有不同的API,因此您必须确定要使用哪个API。

现在重要的是要注意AngularStrap和AngularUI在功能上有很多重叠(例如,两者都提供模式服务,导致上述混乱)。 您是否必须同时使用两者?