2016-02-05 42 views
0

我正在使用离子和angularfire构建一个应用程序,我不明白使用$ onAuth维护会话背后的逻辑。我知道如何使用它的功能,但我不知道在哪里使用它..

我需要注入$ onAuth在每个控制器和veirfy如果authData为空或不(如果使用$ unauth并正确地重定向用户)或者有一种方法可以将此函数($ onAuth)集中在另一个文件中,并让列表化,然后只有在authData为空时才执行某些操作?

随意问,如果问题不清楚!

在此先感谢所有帮助! :)

回答

1

有很多可能的方法,你可以采取你的目标。最糟糕的将是采取你描述的方式,并在每个控制器中使用它,因为你应该保留你的代码DRY。显然你的目标是只写一次$onAuth的方法。

一个简单的方法是在您的dom的最顶端(例如最外层的html元素,例如body标签)实例化一个MainController。然后,您可以使用您的子控制器访问来自父控制器的数据,如here。您可以在主控制器中注入$onAuth服务,并让它按照您的逻辑进行操作,您可以通过其所有子控制器的authData访问主控制器的$scope

更可重用的部分是编写一个服务,您可以从您的所有控制器访问。在这里找一个很棒的教程。

最简单的方法是将$onAuth放入模块的run block中,并将其保存在您的$rootScope中,以后也可以从所有控制器访问它。 Here是一个身份验证示例。你会写

angular.module('your-module').run(function($rootScope, Auth) { 
    $rootScope.auth = Auth; 
    $rootScope.auth.$onAuth(function(authData) { 
    $rootScope.authData = authData; 
    //do anything you want here, e.g. redirect 
    }); 
} 
+0

“一个更可重用的部分是编写一个服务,你可以从所有的控制器访问,在这里找到一个很好的教程。我想你在这句话中忘了一个链接。除此之外,你的答案很棒,很清楚很多选项!感谢一堆! –

相关问题