1

我希望這個問題的標題是有道理的。我需要的是一種在控制器中存儲對象的引用並在另一箇中訪問它的方法。如何以角度存儲對象或全局對象的引用?

例如,我有一個AppCtrl在那裏我開始火力點:

.controller('AppCtrl', function ($scope, $ionicModal, $timeout, $firebase) { 
     var ref = new Firebase("https://test.firebaseio.com/"); 
     var sync = $firebase(ref); 
     $scope.db = sync.$asObject(); 

     var authClient = new FirebaseSimpleLogin(ref, function(error, user) { 
      if (error) { 
      } else if (user) { 
       console.log(user); 
      } else { 
       // user is logged out 
      } 
     }); 

     ... 

在另一個控制器我想要做的authClient.logout()authClient不可用:

.controller('LogoutCtrl', function ($scope, $stateParams, $firebase) { 
     authClient.logout(); 
}) 

有沒有辦法訪問authClient在第二個控制器中,而不需要實例化FirebaseSimpleLogin,就像從全局變量中抓取它?

我不知道什麼是最好的辦法,也許是一個好主意,重新初始化它..

我使用firebase來作爲例子,但是這可能是任何其他類

有什麼想法?

+1

您應該使用一個服務爲... – bmleite 2014-09-02 17:19:52

回答

3

在這種情況下角度建議使用Services

角服務是連接在一起使用依賴注入(DI)可取代的對象。您可以使用服務在整個應用中組織和共享代碼。

UPDATE


使用簡單的登錄與example火力點和角度

+0

說服務,包裹FirebaseSimpleLogin的例子,可以是[發現在angularFire種子](https://github.com/firebase/angularfire-seed/blob/master/app/js/simpleLogin.js) – Kato 2014-09-02 19:06:43

+0

謝謝。我已經更新了答案 – 2014-09-02 19:09:10

+0

我最近爲了同樣的需要創建了我的第一個AngularJS服務。比angularFire-seed更少用,但不適合註釋:'app.constant('FBURL',「https://myfirebase.firebaseio.com/」); ('firebaseAuth',function($ firebase,$ firebaseSimpleLogin,FBURL){return $ firebaseSimpleLogin(new Firebase(FBURL));});' – 2014-09-02 21:33:00