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