尽管已加载,但无法实例化服务

时间:2015-05-21 08:25:38

标签: angularjs angularjs-service

这是主要模块:

(function() {
    "use strict";

    angular
        .module('wda', [
            /* Angular modules */
            'ngRoute',

            /* 3rd-party modules */
            'ui.bootstrap',

            /* Feature areas */
            'wda.overview',

            /* Shared resources */ 
            'websiteService'
        ])
        .config(function($routeProvider) {
            $routeProvider
                .otherwise({
                    redirectTo: '/overview'
                });
        });

}());

这是我想在整个应用中使用的服务:

(function() {
    "use strict";

    angular
        .module('wda')
        .factory('websiteService', websiteService);

    websiteService.$inject = ['$window', '$q'];

    function websiteService($window, $q) {
        var svc = {};

        return svc;
    }

}());

这是我在index.html中加载它们的方式,就在</body>标记上方:

<script src="scripts/vendor/angular.js"></script>
<script src="scripts/vendor/angular-route.js"></script>
<script src="scripts/vendor/ui-bootstrap-tpls-0.12.1.min.js"></script>
<script src="app/app.module.js"></script>
<script src="app/overview/overview.module.js"></script>
<script src="app/overview/overview.controller.js"></script>
<script src="app/shared/website-service/websiteService.service.js"></script>

所有文件都被加载,没有404,但我仍然收到此错误:

  

未捕获错误:[$ injector:modulerr]无法实例化模块wda   由于:错误:[$ injector:modulerr]无法实例化模块   websiteService由于:错误:[$ injector:nomod]模块   'websiteService'不可用!你要么拼错了模块   命名或忘记加载它。如果注册模块,请确保您   将依赖项指定为第二个参数。

我理解它的内容,但不明白为什么会这样。我的代码出了什么问题?

1 个答案:

答案 0 :(得分:1)

您应该声明您的服务:

&#13;
&#13;
'use strict';

angular.module('wda')
       .factory('websiteService', ['$window','$q',function($window,$q){
            
           var svc = {};
         
           return svc;
         
        }]);
&#13;
&#13;
&#13;

然后在您的控制器中,您可以注入您的工厂:

&#13;
&#13;
'use strict';

angular.module('wda')
       .controller('YourCtrl',['websiteService', function(websiteService){
       
         //Whatever you want to do with your service
       }]);
&#13;
&#13;
&#13;