我正在使用離子和angularfire構建一個應用程序,我不明白使用$ onAuth維護會話背後的邏輯。我知道如何使用它的功能,但我不知道在哪裏使用它..
我需要注入$ onAuth在每個控制器和veirfy如果authData爲空或不(如果使用$ unauth並正確地重定向用戶)或者有一種方法可以將此函數($ onAuth)集中在另一個文件中,並讓列表化,然後只有在authData爲空時才執行某些操作?
隨意問,如果問題不清楚!
在此先感謝所有幫助! :)
我正在使用離子和angularfire構建一個應用程序,我不明白使用$ onAuth維護會話背後的邏輯。我知道如何使用它的功能,但我不知道在哪裏使用它..
我需要注入$ onAuth在每個控制器和veirfy如果authData爲空或不(如果使用$ unauth並正確地重定向用戶)或者有一種方法可以將此函數($ onAuth)集中在另一個文件中,並讓列表化,然後只有在authData爲空時才執行某些操作?
隨意問,如果問題不清楚!
在此先感謝所有幫助! :)
有很多可能的方法,你可以採取你的目標。最糟糕的將是採取你描述的方式,並在每個控制器中使用它,因爲你應該保留你的代碼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
});
}
「一個更可重用的部分是編寫一個服務,你可以從所有的控制器訪問,在這裏找到一個很好的教程。我想你在這句話中忘了一個鏈接。除此之外,你的答案很棒,很清楚很多選項!感謝一堆! –