2016-04-21 77 views
2

我有一條路由配置爲重定向到默認頁面/patients,否則它將用戶發送到/login。目前如果我導航到localhost:<port>,我會得到默認頁面。問題出在希望用href ='/'點擊徽標。當我這樣做時,它不會調用解析函數。它本質上不呈現任何內容,並且刪除了意圖在認證後面生活的頁面元素。Angular href ='/'not resolved

這是否配置錯誤?誰能告訴我這裏發生了什麼?如果您需要更多信息,請告訴我。謝謝。

app.config(['$routeProvider', function ($routeProvider) { 
    $routeProvider. 
     when('/patients', { 
      templateUrl: '/templates/dashboard.html', 
      requireLogin: true, 
      resolve: { 
       auth: function (SessionService) { 
        SessionService.resolve() 
       } 
      } 
     }). 
     when('/', { 
      redirectTo: '/patients' 
     }). 
     otherwise({ 
      redirectTo: '/login' 
     }); 
+5

您是否使用HTML5Mode?如果沒有,那麼你可能應該使用'href =「#/」'。如果*使用HTML5Mode,則需要在服務器上進行配置更改以使相對的href引用正常工作,因此列出服務器可能會有所幫助。 – Claies

+0

工作!謝謝。如果你想要點,把你的評論放入答案,我會接受它。 – Kraken

+0

如果您認爲有幫助,請隨時將所提供的答案標記爲已接受。我不想提供一個沒有充分解釋hashbang和HTML5模式的答案,它提供的答案是。 – Claies

回答

2

由於您的角度路由工作在hashbang模式下,您需要將鏈接放到'#/'。看看這個thread有關hasgband模式和HTML5模式的更多細節。如果您想擺脫路線中的'#',請嘗試啓用HTML5模式。該代碼會是這樣的鏈接是:

app.config(['$routeProvider', '$locationProvider' function ($routeProvider, $locationProvider) { 
    $routeProvider. 
     when('/patients', { 
      templateUrl: '/templates/dashboard.html', 
      requireLogin: true, 
      resolve: { 
       auth: function (SessionService) { 
        SessionService.resolve() 
       } 
      } 
     }). 
     when('/', { 
      redirectTo: '/patients' 
     }). 
     otherwise({ 
      redirectTo: '/login' 
     }); 
     $locationProvider 
      .html5Mode(true) 
}]) 

只是一個謹慎的詞,使HTML5模式後,直接鏈接的角度可能無法正常工作。您將不得不稍微更改服務器配置以重寫應用程序中入口點的鏈接。如果您正在使用ASP.NET,請在web.config中添加重寫規則。在system.webServer部分添加此項

<rewrite> 
    <rule name="HTML5 Compatible Mode" stopProcessing="true"> 
       <match url=".*" /> 
       <conditions> 
       <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
       <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
       <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" /> 
       </conditions> 
       <action type="Rewrite" url="/" /> 
    </rule> 
</rewrite> 
+0

我沒有使用html5模式,我不打算立即改變它。 (更大的魚要炒)鏈接似乎正在工作,但我的'''.when('/',...)'''子句說a.match不是一個函數。我是否也需要在那裏包含哈希? – Kraken