2015-09-03 69 views
-2

我正在尋找一種方法來使用ngRouting在新窗口中打開模板。我在我的索引頁中設置了一個ng-view div,允許我在中心頁面中填充數據,但是如果用戶選擇在新窗口/選項卡中打開鏈接,頁面會返回404,因爲它是期望有ngRoute加載它的控制器和模板。有什麼方法可以讓Angular處理這個選項嗎?Angular和ngRoute;在新窗口中打開

下面是我的索引頁

<script type='text/javascript' src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.13/angular.min.js"></script> 
<script type='text/javascript' src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.13/angular-route.min.js"></script> 

<body ng-controller="routeController" ng-init="init()"> 
    <div id="wrapper" class="page"> 
     <ul id='settingsLink' class='settingsLink' ng-mouseleave="hideSettingsLink()"> 
      <li><a href="index.html#!/login">Login</a></li> 
      <li><a href="index.html#!/page2">Page 2</a></li> 
      <li><a href="index.html#!/page3">Page 3</a></li> 
     </ul> 
     <div id="viewcontent"> 
      <div ng-view></div> 
     </div> 
    </div> 
</body> 

這裏是我的routeController配置代碼:

angular.module('myApp').config(function($routeProvider, $locationProvider, $sceDelegateProvider){ 

     $routeProvider 

     // route for the Login page 
     .when('/login', { 
      templateUrl : 'pages/login.html', 
      controller : 'AuthenticateController' 
     }) 

     // route for page 2 
     .when('/page2', { 
      templateUrl : 'pages/page2.html', 
      controller : 'Page2Ctrl' 
     }) 

     // route for page 3 
     .when('/page3', { 
      templateUrl : 'pages/page3.html', 
      controller : 'Page3Ctrl' 
     }); 

     $locationProvider 
     .html5Mode(false) 
     .hashPrefix('!'); 
    }); 

比方說,我想開第3頁。如果我點擊右鍵並嘗試打開一個新標籤頁,我的頁面會解析回「index.html#!/ login」,而不是「index.html#!/ page3」。

+0

請添加你已經嘗試的代碼。這個問題太廣泛了。 FYI,Angular需要加載並在新窗口中運行。 – pherris

回答

0

如果您在HTML5Mode中使用ngRoute,則在URL中不會有散列,並且在實際中您將獲得Angular視圖時,服務器會認爲您正在嘗試訪問文件。你需要使用hashbang模式來解決這個問題。在鏈接

$locationProvider 
    .html5Mode(false) 
    .hashPrefix('!'); 

現在,添加哈希:在您配置的路線(與$routeProvider)的地方,添加此

<a href="#!/path">link</a> 
+0

這可以防止404頁面的新頁面,但它似乎不正確地將我的頁面重定向到我在Init函數中設置的頁面,而不是我實際嘗試打開的模板。 – user1327704

+0

你可以嘗試完全刪除$ locationProvider並告訴我會發生什麼? – nathanhleung

+0

這似乎將我的背面重定向到我的登錄頁面,無論我嘗試打開哪個頁面。我在參考文獻中將符號留爲「#!/ page3」。 – user1327704