2016-04-06 160 views
0

我有如下定義angularjs路線:角JS不經過路由的瀏覽器頁面刷新到默認頁面

moduleA.config(function($routeProvider){ 
    $routeProvider. 
    when('/A',{templateUrl:'A.jsp'}). 
    when('/B',{templateUrl:'B.jsp'}). 
    when('/C',{templateUrl:'C.jsp'}). 
    otherwise({ 
     redirectTo: '/', 
     templateUrl: 'A.jsp' 
    }); 
}); 

現在,讓我們說我點擊的東西,它會被重定向到#/ C /視圖。刷新頁面後,它將重定向到查看C而不是默認視圖。 我必須在每次頁面刷新發生後顯示默認頁面。 我想在刷新頁面時將url更改爲基礎url,以便可以將其重定向到默認頁面。我正在通過Angularjs的方式尋找更好的替代方案。 在此先感謝。

+0

如果url是一樣的東西'HTTP://www.domain.co.il /#/ C'和你刷新頁面,它會返回到C,返回到默認您必須像「http://www.domain.co.il /#/'一樣導航到您的根網址或導航到一個未提供的網址。 – Dvir

+0

這就是預期的行爲。你有'http:// foo.bar /#C'並重新加載頁面或發送你的朋友的鏈接或書籤,你直接進入預期的觀點。您可能需要在'.run'中執行一些操作來指向每個頁面的默認視圖刷新,但這很奇怪。我想知道你的使用情況的行爲 – maurycy

+0

@Dvir:我知道,但實際問題是如何通過angularjs方式重定向到默認頁面, – Azim

回答

2

試試這個: 在app.run()塊注射「窗口」和$位置的依賴,並添加:

window.onbeforeunload = function() { 
    $location.path('/'); 
}; 

像@maurycy評論說,如果你想要用戶去默認頁面隨時一用戶他正在申請您的應用程序,您不需要該事件。

剛:

$rootScope.$on('$routeChangeStart', function (event, next, current) { 
      if (!current) { 
       $location.path('/'); 
      } 
     }); 

在app.run()函數。

它應該工作

+0

爲什麼添加事件監聽器時,他只能在應用程序加載時發生重定向? – maurycy

+0

如果他從具有特定URL的鏈接來到應用程序,比如'http://www.domain.co.il/#/ C',我想讓他進入'C'頁面。 – IsraGab

+1

非常感謝,您節省了我的很多時間。我正在嘗試很多其他的東西不起作用。 – Azim