我已經搜索了過去幾天的互聯網,試圖找出如何解決這個問題。我不確定我是否只是沒有正確的問題,或者這是一個簡單的解決方案,我看不到。
我的問題是,在我的$ routeProvider中,我在每個路由中添加了一個名爲'access'的屬性,以確定用戶是否必須登錄或不使用名爲'isFree'的變量來查看頁面爲真或假。
實施例:
$routeProvider
.when('/', {
controller: 'homeController',
templateUrl: 'partials/home.html',
access: { isFree: true }
});
然後,我有在該手錶路由變化並檢查.RUN功能代碼塊,如果頁面需要在要簽名的用戶,如果他們已經登入。如果頁面的isFree被設置爲true,那麼它應該讓頁面加載,否則它會檢查用戶是否登錄,如果沒有,它會重定向回主頁。
.run(['$rootScope', '$location', function($root, $location) {
$root.$on('$routeChangeSuccess', function(scope, curRoute, prevRoute) {
if (!curRoute.access.isFree && !loggedIn) {
$location.path('/');
}
});
我遇到的問題不在於此代碼無法正常工作。問題是,當你第一次加載到主頁(這是自由被設置爲true)時,控制檯給出'isFree'未定義的錯誤。首頁本身仍然加載並且該網站在第一次錯誤之後正常工作。但是,我不想讓這個錯誤首先出現。據我可以看出,當我第一次直接鏈接到主頁時,它試圖在isFree屬性被加載前檢查,但我還沒有解決我的問題。如果有人知道我能做些什麼來解決這個小問題,將不勝感激。
你有$ routeProvider.otherwise定義? – tasseKATT
是的,但它也給了我'isFree'未定義的錯誤。這個問題現在已經解決了。馬瑟伯格的解決方案工作。 – Jacob
您是否在其他定義中添加了「access:{isFree:true}」?我的猜測是,否則defintion首先被擊中,並且您的$ routeChangeStart中的代碼檢查缺少的access.isFree。 – tasseKATT