【问题标题】:how to store a reference to a object or a global object with angular?如何使用角度存储对对象或全局对象的引用?
【发布时间】:2014-10-27 01:02:37
【问题描述】:

我希望这个问题的标题有意义。我需要的是一种在控制器中存储对对象的引用并在另一个控制器中访问它的方法。

例如,我有一个 AppCtrl 我在其中启动 firebase:

.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 作为示例,但这可以是任何其他类

有什么想法吗?

【问题讨论】:

  • 您应该为此使用服务...

标签: javascript angularjs angularjs-scope firebase ionic-framework


【解决方案1】:

在这种情况下,angular 建议使用Services

Angular 服务是使用依赖注入 (DI) 连接在一起的可替代对象。您可以使用服务在您的应用中组织和共享代码。

更新


example 使用 Firebase 和 Angular 进行简单登录

【讨论】:

  • 上述服务的一个例子,包装了 FirebaseSimpleLogin,可以是found in angularFire-seed
  • 我最近为同样的需求创建了我的第一个 AngularJS 服务。不如 angularFire-seed 的多功能,但不适合评论:app.constant('FBURL', "https://myfirebase.firebaseio.com/"); app.factory('$firebaseAuth', function($firebase, $firebaseSimpleLogin, FBURL) { return $firebaseSimpleLogin(new Firebase(FBURL)); });
猜你喜欢
  • 2016-10-09
  • 2012-10-28
  • 1970-01-01
  • 1970-01-01
  • 2014-06-17
  • 1970-01-01
  • 1970-01-01
  • 2016-05-09
相关资源
最近更新 更多