2016-04-12 43 views
0

有一點小故事。AngularJS解決承諾。如果承諾被拒絕,則重定向

  • 我有公共頁面,並不侷限於
  • 我有私人的網頁,限制需要登錄。
  • 我正在使用Firebase身份驗證進行登錄。

我有我的$routeProvider我在我的主要.module()我的限制路徑.config()如下所示設置。

.when('/admin', { 
      controller: 'adminCtrl as admin', 
      templateUrl: 'pages/admin/dashboard.tpl.html', 
      resolve: { 
       "currentAuth": ["$firebaseAuth", function($firebaseAuth) { 
        //$requireAuth returns a promise if authenticated, rejects if not 
        var ref = new Firebase(fbUrl); 
        var authObj = $firebaseAuth(ref); 

        return authObj.$requireAuth(); 
       }] 
      } 
     }) 

我的問題是關於解決具體而言,我假設其正常工作,因爲我沒有看到我的瀏覽器templateUrl。 (我知道這個事實,我刪除了回報,並放置return true和我的templateUrl出現)

所以現在,這個決心的承諾正在被拒絕。由於我不是登錄用戶。

我的問題是,我怎麼會一個。發送$routeProvider到我的.otherwise路線或b。如果承諾被拒絕,則在解決方案中放置重定向。

基本上,如果用戶沒有登錄,我希望他們發回主頁。現在瀏覽器只顯示一個空白頁面。

回答

0

經過一些調查研究(我現在意識到我需要挖掘更多的,對不起,不會再發生了。)

我已經加入.run()我的應用程序找到了解決辦法。

.run(function($rootScope, $location) { 
    $rootScope.$on("$routeChangeError", function(event, current, previous, eventObj) { 
     console.log(eventObj); 
     if (eventObj === 'AUTH_REQUIRED') { 
      $location.path("/"); 
     } 
    }); 
}) 

這抓住了我的routeChangeError並重定向,當我有錯誤的AUTH_REQUIRED。

簡單。