0

我知道这个问题标题中的错误基本上是因为在我的控制器中,我在我的控制器中注入了一个尚未定义的会话服务。我目前正在查看:Angular Devise,我正在一个使用导轨但角度和导轨分开的应用程序中推出它。我在角度方面的设置如下:

main.js

angular.module('App.controllers', []);
angular.module('App.config', []);
angular.module('App.directives', [])
angular.module('App.resources', ['ngResource']);
angular.module('App.services', []);

var App = angular.module("App", [
  "ngResource",
  "ngCookies",
  "$strap.directives",
  "App.services",
  "App.directives",
  "App.resources",
  "App.controllers",
  "TotemApp.config"
  ], function ($routeProvider, $locationProvider, $httpProvider) {
  var interceptor = ['$rootScope', '$q', function (scope, $q) {
      function success(response) {
          return response;
      }

      function error(response) {
          var status = response.status;

          if (status == 401) {
              window.location = "/login";
              return;
          }
          return $q.reject(response);

      }

      return function (promise) {
          return promise.then(success, error);
      }
  }];
});

会话.js

App.service('Session',[ '$cookieStore', 'UserSession', 'UserRegistration', function($cookieStore, UserSession, UserRegistration) {

  this.currentUser = function() {
    return $cookieStore.get('_angular_devise_user');
  }
  this.signedIn = function() {
    return !!this.currentUser();
  }
  this.signedOut = function() {
    return !this.signedIn();
  }
  this.userSession = new UserSession( { email:"sample@email.com", password:"password", remember_me:true } );
  this.userRegistration = new UserRegistration( { email:"sample@email.com", password:"password", password_confirmation:"password" } );
}]);

session_controller

App.controller('SessionsController', ['$scope', '$location', '$cookieStore', 'Session', function($scope, $location, $cookieStore, Session) {

  $scope.session = Session.userSession;

  $scope.create = function() {

    if ( Session.signedOut ) {
      $scope.session.$save().success(function(data, status, headers, config) {
        $cookieStore.put('_angular_devise_user', Session.userSession.email);
        $location.path('/todos');
      });
    }
  };

  $scope.destroy = function() {
    $cookieStore.remove('_angular_devise_user');
    $scope.session.$destroy();
  };

}]);

路由.js

'使用严格';

App.config(function($routeProvider, $httpProvider, $locationProvider) {
      $routeProvider
      .when('/', {
        templateUrl: 'views/main/home.html',
        controller: 'MainCtrl'
      })
      .when('/login', {
        templateUrl: 'views/sessions/new.html',
        controller: 'SessionsController'
      })
      .when('/sign_up', {
        templateUrl: 'views/registrations/new.html',
        controller: 'RegistrationsController'
      })
      .otherwise({
        redirectTo: '/'
      });
    });

当我尝试访问登录页面或注册页面时会发生此错误。如果有人能提供一些启示,将不胜感激。不完全确定如何解决此Error: Unknown provider: $SessionProvider <- $Session错误

4

2 回答 2

0

当您在其他 javascript 或 typescript 文件中出现语法错误时。你会得到同样的错误。请确保您没有语法错误。

于 2015-01-13T05:33:38.417 回答
0

乍一看,这看起来是正确的。我只能假设您可能没有在 index.html 文件中包含 Session.js?

Angular 显然不知道什么是“会话”服务,因此据我所知,文件未加载、未正确加载或类似的问题都存在问题。

编辑:错误是说'SessionProvider <- Session'还是'$SessionProvider -< $session',因为如果是后者,那么在你的应用程序中的某处命名错误,因为你的服务被命名为'Session'而不是'$Session'。

于 2013-09-23T10:02:23.680 回答