2015-09-03 2 views
-2

Я ищу способ использования ngRouting для открытия шаблона в новом окне. У меня на странице индекса есть ng-view div, который позволяет мне заполнять данные на моей центральной странице, но если пользователь хочет открыть ссылку на новом окне/вкладке, страница возвращается на 404, так как она ожидая, что ngRoute загрузит его контроллеры и шаблоны. Есть ли способ разрешить Угловому обрабатывать этот параметр?Угловые и 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

Если вы используете ngRoute в HTML5Mode, у вас не будет хеша в URL-адресе, и сервер будет думать, что вы пытаетесь получить доступ к файлу, когда на самом деле вы получаете угловое представление. Для этого нужно использовать режим hashbang. В том месте, где вы настроить свои маршруты (с $routeProvider), добавьте это:

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

Теперь в ссылках, добавьте хеш:

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

Это предотвращает появление новой страницы с 404-ing, но, похоже, неправильно перенаправляет мою страницу на тот, который я установил в своей функции Init, а не на шаблон, который я фактически пытаюсь открыть. – user1327704

+0

Можете ли вы попробовать полностью удалить $ locationProvider и рассказать мне, что происходит? – nathanhleung

+0

Это, кажется, перенаправляет мою спину на мою страницу входа вне зависимости от того, какую страницу я пытаюсь открыть. Я оставил обозначение как «#!/Page3» в моих ссылках. – user1327704

Смежные вопросы