2012-10-30 53 views
2

我已經添加了這個模塊我的應用程序:https://github.com/witoldsz/angular-http-auth/blob/gh-pages/lib/http-auth-interceptor.js

這對401級的響應廣播消息,非常方便!只是不知道如何讓我的$ routeProvider監聽$ rootscope。$ broadcast。我想重定向到401s上的登錄頁面。

我的$ routeProvide看起來是這樣的:

var app = angular.module('demoApp', ['http-auth-interceptor','tastypieModule']) 
    .config(function($routeProvider) { $routeProvider. 
     when('/', {controller:HomeCrtl, templateUrl:'partials/home.html'}). 
     when('/sign-in', {controller:SiginInCtrl, templateUrl:'partials/sign-in.html'}). 
     otherwise({redirectTo:'/'}); 
}) 

回答

3

你不會讓你的$ routeProvider聽它。您只需在您的控制器中監聽它,然後使用$ location將您的應用程序發送到適當的路線。

app.controller('MainAppCtrl', function($scope, $rootScope, $location) { 
    $rootScope.$on('event:auth-loginConfirmed', function(){ 
      $location.path('/'); 
    }); 
}); 

編輯:正如你可能有很多控制器,你會希望有一個包裝的ngView父控制器...

<div ng-controller="MainAppCtrl"> 
    <div ng-view> 
    </div> 
</div> 

上述控制器現在用於所有意見,並確保註冊你的聽衆。

+0

我的$ routeProvider將有很多控制器。我正在尋找一種傾聽401s的全球方式。 –

+0

我會更新我的答案,以便更具體。 –

+0

Brill的作品(更有意義,但有此事件:「event:auth-loginRequired」)謝謝:) –