3

「app」というモジュールに ui.bootstrap を挿入しようとしています。既に ui-bootstrap javascript ファイルを html に含めましたが、何をしても以下のエラーが発生します。

Uncaught Error: [$injector:modulerr] 

ui.bootstrap への依存関係を削除すると、エラーはなくなります。

head タグ内の js インポートの順序。すべて正常にロードされます。(Chrome 開発ツールでチェック)

<script src="/Scripts/angular.min.js"></script>
<script src="/Scripts/angular-route.js"></script>
<script src="/Scripts/angular-ui-router.min.js"></script>
<script src="/Scripts/angular-animate.js"></script>
<script src="/Scripts/ui-bootstrap-tpls-1.2.5.min.js"></script>

現在の AngularJS のバージョンは 1.5.2 です

app.js

(function () {
    'use strict';

    var app = angular.module('app', [
        // Angular modules
        'ngRoute',
        'ngAnimate',
        'ui.bootstrap',
        // Custom modules
        // 3rd Party Modules
        'ui.router'
    ]);

    app.config(['$locationProvider', '$stateProvider', '$urlRouterProvider', '$modal', function ($locationProvider, $stateProvider, $urlRouterProvider, $modal) {
        $locationProvider.html5Mode(true);

        $urlRouterProvider.otherwise('/');
        $stateProvider
            .state('home', {
                url: '/',
                controller: 'frontpageController',
                templateUrl: 'app/views/frontpage.html',
                data: {
                    authorize: false 
                }
            })
            .state('login', {
                url: '/login',
                controller: 'loginController',
                templateUrl: 'app/views/login.html',
                data: {
                    authorize: false
                }
            })
            .state('profile', {
                url: '/profile/:userId',
                controller: 'profileController',
                templateUrl: 'app/views/profile.html',
                data: {
                    authorize: true
                }
            })
            .state('error', {
                url: '/error',
                controller: 'errorController',
                templateUrl: 'app/views/404.html',
                data: {
                    authorize: false
                }
            })
    }]);

    app.run(function ($rootScope, loginService) {
        $rootScope.$on('$stateChangeStart', function (event, toState, toParams) {
            var authorize = toState.data.authorize;

            if (authorize && typeof $rootScope.currentUser === 'undefined') {
                event.preventDefault();
                // get me a login modal!
                loginService()
            }
        });

    });

})();
4

4 に答える 4

2

モジュール構成にサービスを注入することはできません。プロバイダーのみを許可します。 $modal最後の ui-bootstrap のように名前も変更$uibModalされます (コントローラーで名前を変更するため)。

したがって、.config から '$modal' を削除し、使用する場合にのみ挿入してください。

于 2016-03-29T14:17:04.267 に答える
0

ui ブートストラップには JS ファイルが 1 つしかありませんか? ui ブートストラップのすべてのフォルダーを確認し、他の JS ファイルが欠落している場合は追加します。

于 2016-03-29T13:49:33.030 に答える
0

それはあなたのAngularのバージョンかもしれません。サイトにはAngularJS 1.4.x以上が必要だと書かれています。

于 2016-03-29T14:02:37.510 に答える