2014-11-02 5 views
0

После попытки всего, что я могу себе представить, и прочитав несколько сообщений здесь, я думаю, что мне нужна ваша помощь! У меня есть webapp, основанный на узле и выражающий на сервере и угловой на клиенте. Я использую угловую маршрутизацию.Angular.js routing: как мне добраться до маршрутов конечной точки?

ОБЩАЯ ИНФОРМАЦИЯ

Я имею маршрутизацию настроить как следующее:

mainApp.config(['$routeProvider', 
     function($routeProvider) { 
      $routeProvider 
      .when('/home', { 
       templateUrl: 'initial.ejs', 
       controller: 'controllerInitialView' 
      }) 
      .when('/home/post', { 
       templateUrl: 'post.ejs', 
       controller: 'controllerAddPost' 
      }) 
      .... other /home/something routes .. 
      .otherwise({ 
       redirectTo: '/home' 
      }); 
      } 
      ]); 

Шаблон HTML организован следующим образом:

<div class="container-fluid"> 
     <div class="row"> 
     <!-- Left Columns: With links to views --> 
     <div class="col-xs-2 home-bd-dx"> 
     <ul> 
     <li> 
      <a href="/home/post"> Post </a> 
     </li> 
     ... 
     <li> 
      <a href="/logout"> Logout </a> 
     </li> 
     </ul> 
    </div> 

    <!-- Central Columns: Here the views are inserted --> 
    <div class="col-xs-10"> 
     <div ng-view></div> 
    </div> 

    </div> 
    </div> 

вопрос с ссылкой Выход. У меня есть ссылка на сервер serverapp.get('/logout'), в которой для выхода из системы пользователь использует passport.js. Однако я не могу связаться с этой ссылкой. Независимо от того, что я пытаюсь преобразовать мой /logout, в /home/logout, и он обрабатывается Угловым, а не сервером.

ВОПРОС

Так вот вопрос: как я могу создавать ссылки на конечную точку маршрута в Угловом без Угловая маршрутизатор их перехватывать?

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ ПРИ НЕОБХОДИМОСТИ

Экспресс-сервер имеет маршрут serverapp.get('/home/*'), которое передает эти маршруты к Angular.js, возвращая шаблон я набросал выше.

Я попытался с и без <base href="/home"> тега в <head> не повезло

Я попытался создать маршрут «/ дом/выхода из системы», а затем, в контроллер /home/logout угловой $window.location.href="/logout";. Не повезло и в этом случае.

ответ

0

Если вы правильно поняли, что вы пытаетесь сделать, это отключить глубокую привязку для определенных URL-адресов. Вы можете сделать это, добавив target="_self" в тег <a>.

Попробуйте это:

<a href="/logout" target="_self">Logout</a> 

Теперь URL ссылка указывает на будет обрабатываться сервером вместо Угловое.

+0

Спасибо, это сработало, но я не понимаю, почему это пропускает угловую маршрутизацию. Из [w3school] (http://www.w3schools.com/tags/att_a_target.asp) я прочитал следующее о '_self':« Открывает связанный документ в том же фрейме, который был нажат (это по умолчанию) » , Если по рамке это окно или вкладка, он говорит, где ссылка открыта, поэтому я не понимаю, что это касается маршрутизации. Кроме того, он указывает, что это поведение по умолчанию. Отсюда я понимаю, что '' без 'target = ...' эквивалентно наличию 'target = _self', при каких обстоятельствах угловая маршрутизация не пропускается. – ZzKr