在AngularJS中为我的SessionsController提供会话服务

时间:2013-07-31 15:07:40

标签: javascript angularjs

这可能是我不能正确处理依赖注入的问题,但我正在尝试为我的SessionsController提供一个'Session'服务。这是我的SessionsController:

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

  $scope.foo = function() {
    console.log("clicked foo..");
  }

  $scope.session = Session.userSession;


  $scope.create = function() {

    if ( Session.signedOut ) { 
      $scope.session.$save()
      .success(function(data, status, headers, config) {
        $cookieStore.put('_app_user', data);
      }); 
    }   

  }; 

  $scope.destroy = function() {
    $scope.session.$destroy();
  };  


}]);

这是实际的会话服务定义:

angular.module('App.services').service('Session',[ '$cookieStore', 'UserSession', 'UserRegistration', function($cookieStore, UserSession, UserRegistration) {
  this.currentUser = $cookieStore.get('_app_user');
  this.signedIn = !!$cookieStore.get('_app_user');
  this.signedOut = !this.signedIn;
  this.userSession = new UserSession( { email:"foo@bar.com", password:"example", remember_me:true } );
  //this.userRegistration = new UserRegistration( { email:"foo-" + Math.floor((Math.random()*10000)+1) + "@bar.com", password:"example", password_confirmation:"example" } );

  $rootScope.$on('$routeChangeStart', function (current, next) {
    if (this.signedOut && next !== '/login') {
     console.log("relocating user..");
        //$location('/login');
    }});

}]);

以下是我将它串在一起的方式:

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

var App = angular.module("App", ['App.resources', 'App.services', 'App.directives', 'App.filters', 'App.controllers', 'ui.compat', '$strap.directives', 'templates']);

显然缺少一些东西将所有内容串在一起,因为Firebug抱怨没有名为Session的模块。

1 个答案:

答案 0 :(得分:2)

Firebug是对的,你没有名为session的模块。您在App.services模块中有一个名为Session的服务。

只需删除会话模块注入,就可以了。

angular.module('App.controllers', ['ngCookies']);