javascript - 无法将 ui.bootstrap 注入(inject)我的模块

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

我正在尝试将 ui.bootstrap 注入(inject)到我的名为“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

应用程序.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()
            }
        });

    });

})();

最佳答案

你不能在模块配置中注入(inject)服务,它只允许提供者。 $modal 在上一个 ui-bootstrap 中也被重命名为 $uibModal(在你的 Controller 中重命名)。

因此,从您的 .config 中删除“$modal”,仅在您使用它时注入(inject)它。

关于javascript - 无法将 ui.bootstrap 注入(inject)我的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36286071/

相关文章:

javascript - 定位元素失败

javascript - Breeze 未检测到变化

angularjs - 在 ionic 中使用 ngStorage 作为数组

twitter-bootstrap - 带有扭曲的居中 Bootstrap 网格

twitter-bootstrap - 在 Visual Studio 2013 中使用 Bootstrap 调试响应式 Web 应用程序时,IE 11 引发异常

javascript - 将日期时间转换为 UTC 但保留相同的日期和时间部分

javascript - 被 javascript 困住了(初学者)

javascript - Angular 似乎没有运行

javascript - myfunction() 函数在 angularjs 中从一个 Controller 调用到另一个 Controller

Twitter-bootstrap - 如果井已经在它自己的范围内,如何使用 "span"在井内分发内容?