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" } );
}]);

セッションコントローラー

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 に答える