2014-11-02 82 views
0

在嘗試了所有我能想象的事情之後,在這裏閱讀了幾篇文章,我想我需要你的幫助! 我有一個基於節點的Web應用程序,並在客戶端上的服務器和Angular上表示。我正在使用角度路由。Angular.js路由:如何到達端點路由?

基本信息

我的路由設置如下所示:

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,並且它由Angular而不是由服務器處理。

問題

因此,這裏的問題:我怎樣才能創建鏈接到端點角航線沒有角路由器攔截呢?

附加信息IF NEEDED

的Express服務器是有一個路線serverapp.get('/home/*')其通過返回我上面勾畫模板代表這些路由Angular.js。

我試圖有和沒有在<head>一個<base href="/home">標籤沒有運氣

我試圖創建路由「/家/註銷」,然後具有在/home/logout控制器角$window.location.href="/logout";。在這種情況下也沒有運氣。

回答

0

如果我的理解正確,您要做的是禁用某些網址的深層鏈接。您可以通過將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',在這種情況下Angular路由不會被跳過。 – ZzKr 2014-11-02 13:21:27