2016-02-05 39 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

「一個更可重用的部分是編寫一個服務,你可以從所有的控制器訪問,在這裏找到一個很好的教程。我想你在這句話中忘了一個鏈接。除此之外,你的答案很棒,很清楚很多選項!感謝一堆! –

相關問題