2013-07-31 40 views
0

這可能是我沒有正確處理依賴注入的問題,但我正在嘗試爲我的SessionsController提供「會話」服務。這裏是我的SessionsController:在AngularJS中爲我的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:"[email protected]", 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的模塊。

回答

2

Firebug是對的,你沒有模塊命名會話。您在App.services模塊中有一個名爲Session的服務。

只要刪除會話模塊注入,你很好去。

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

有趣。現在,當我這樣做,我得到'錯誤:未知的提供者:UserSessionProvider'。但我想這是一個單獨的問題。 – randombits

+0

在這種情況下,這意味着您正嘗試使用UserSession服務,但您尚未創建它。我想你也會遇到與UserRegistration一樣的問題。我會爲您提供一個指向文檔的鏈接,但它現在似乎已經停止。但是你需要創建角度服務和注入角度服務(或理解依賴注入)部分。 – Oliver

相關問題