简体   繁体   English

在angular js中添加自定义服务时出错

[英]Getting error while adding custom service in angular js

I'm new in AngularJS and i have setup everything in angular js but when i'm going add new authentication service then i'm getting error like this: 我是AngularJS的新手,我已经在angular js中设置了所有内容,但是当我要添加新的身份验证服务时,我会收到如下错误:

在此处输入图片说明

I have create service called sessionService.js for set and get user value in session 我已经创建了一个名为sessionService.js的服务来设置和获取会话中的用户价值
I have create service called authService.js for checking user authentication and get username and it etc 我创建了一个名为authService.js的服务,用于检查用户身份验证并获取用户名及其相关信息等

Here is sessionService.js 这是sessionService.js

'usre strict';

app.factory('sessionService', ['$http', function($http){
    return {
        set : function(key,value){
            return sessionStorage.setItem(key,value);
        },
        get : function(key){
            return sessionStorage.getItem(key);
        },
        destroy : function(key){
            return sessionStorage.removeItem(key);
        }
    }
}])

Here is authService.js 这是authService.js

'use strict';

app.factory('authService', ['$http','sessionService', function($http,sessionService){
      var loggedIn;
    var isAdmin;
    var username;
    var id;

    var checkLogin = function() {
        // Create a custom deferred
        var defer = $q.defer();

        if(loggedIn != undefined) {
            // Resolve your deferred with the value of logged in
            defer.resolve(loggedIn);
        } else {
            setUserData().then(function (data) {
               loggedIn = data.logged;
               if(loggedIn) {
                  isAdmin = data.is_admin;
                  username = data.username;
                  id = data.id;
                  defer.resolve(loggedIn);
               } else {
                  defer.reject();
               }
            }, function () {
               defer.reject();
            });
        }

        return defer.promise;
    }

    var returnUsername = function() {
        // Create a custom deferred
        var defer = $q.defer();

        if(username != undefined) {
            // Resolve your deferred with the value of logged in
            defer.resolve(username);
        } else {
            setUserData().then(function (data) {
               loggedIn = data.logged;
               if(loggedIn) {
                  username = data.username;
                  defer.resolve(username);
               } else {
                  defer.reject();
               }
            }, function () {
               defer.reject();
            });
        }

        return defer.promise;
    }

    var returnId = function() {
        // Create a custom deferred
        var defer = $q.defer();

        if(id != undefined) {
            // Resolve your deferred with the value of logged in
            defer.resolve(id);
        } else {
            setUserData().then(function (data) {
               loggedIn = data.logged;
               if(loggedIn) {
                  id = data.id;
                  defer.resolve(id);
               } else {
                  defer.reject();
               }
            }, function () {
               defer.reject();
            });
        }

        return defer.promise;
    }

    var setUserData = function(callback) {
        return $http.get('/api/checkLogin');
    }

    return {
        loggedIn: function() { return checkLogin(); },
        username: function() { return returnUsername(); },
        id: function() { return returnId(); },
    }
}])

I have added this both service in index.html also 我也在index.html中添加了这两个服务

  <script src="js/app.js"></script>
  <script src="js/config.js"></script>
  <script src="js/config.lazyload.js"></script>
  <script src="js/config.router.js"></script>
  <script src="js/main.js"></script>
  <script src="js/services/ui-load.js"></script>
  <script src="js/services/sessionService.js"></script>
  <script src="js/services/authService.js"></script>
  <script src="js/filters/fromNow.js"></script>
  <script src="js/directives/setnganimate.js"></script>
  <script src="js/directives/ui-butterbar.js"></script>
  <script src="js/directives/ui-focus.js"></script>
  <script src="js/directives/ui-fullscreen.js"></script>
  <script src="js/directives/ui-jq.js"></script>
  <script src="js/directives/ui-module.js"></script>
  <script src="js/directives/ui-nav.js"></script>
  <script src="js/directives/ui-scroll.js"></script>
  <script src="js/directives/ui-shift.js"></script>
  <script src="js/directives/ui-toggleclass.js"></script>
  <script src="js/controllers/bootstrap.js"></script>

And in app.js 并在app.js中

'use strict';


angular.module('app', [
    'ngAnimate',
    'ngAria',
    'ngCookies',
    'ngMessages',
    'ngResource',
    'ngSanitize',
    'ngTouch',
    'ngStorage',
    'ui.router',
    'ui.bootstrap',
    'ui.utils',
    'ui.load',
    'sessionService',
    'authService',
    'ui.jq',
    'oc.lazyLoad',
    'pascalprecht.translate',
]);

I need help for solving this issue. 我需要解决此问题的帮助。
I'm using Angular Bootstrap Admin panel for it. 我正在使用Angular Bootstrap Admin面板。
Any help would be appreciated. 任何帮助,将不胜感激。

Thank you 谢谢

The error is that you are treating sessionService and authService as a module and loading them as dependency in your app . 错误是您将sessionServiceauthService视为模块,并将它们作为依赖项加载到app They are services and not the modules. 它们是服务,而不是模块。 Even the error says the same. 甚至错误也是如此。 The services can be injected in other services but cannot be loaded as module dependencies. 这些服务可以注入其他服务中,但不能作为模块依赖项加载。

Change your code in app.js to remove the services as below: app.js更改代码以删除服务,如下所示:

'use strict';


var app = angular.module('app', [
  'ngAnimate',
  'ngAria',
  'ngCookies',
  'ngMessages',
  'ngResource',
  'ngSanitize',
  'ngTouch',
  'ngStorage',
  'ui.router',
  'ui.bootstrap',
  'ui.utils',
  'ui.load',
  'ui.jq',
  'oc.lazyLoad',
  'pascalprecht.translate',
]);

在所有其他文件之后添加app.js脚本。

Is your app was instantiated globally to be used in other js files. 您的应用是否已全局实例化以在其他js文件中使用? Let's say 比方说

App.js App.js

var app = angular.module('app',[dependencies]);
$(function(){
//Other code
}());

And using instantiated app in other js files. 并在其他js文件中使用实例化的应用程序。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM