无法将ui.bootstrap注入我的模块

时间:2016-03-29 13:40:41

标签: javascript angularjs twitter-bootstrap angular-ui-bootstrap ui.bootstrap

我试图将ui.bootstrap注入我的模块,名为' app'。我已经将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 个答案:

答案 0 :(得分:2)

您不能在模块配置中注入服务,它只允许提供者。 $modal在最后的ui-bootstrap中也被重命名为$uibModal(在控制器中重命名)。

所以删除&#39; $ modal&#39;来自你的.config仅在你使用时才注入它。

答案 1 :(得分:0)

你确定ui bootstrap只有一个JS文件吗?检查ui bootstrap的所有文件夹,如果缺少任何其他JS文件,请添加。

答案 2 :(得分:0)

您必须为tpls添加libraryui bootstrap。例如:

<script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/1.2.5/ui-bootstrap-tpls.js"></script>

<script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/1.2.5/ui-bootstrap.js"></script>

答案 3 :(得分:0)

它可能是你角度的版本。它在网站上说需要AngularJS 1.4.x或更高版本。