2013-05-14 59 views
5

我正在開發一個角度的應用程序,並有快速的問題。作爲一個'單頁面應用程序'角'接管'的URL映射,所以我可以從「/」 - >'/ about'等導航,導航都發生在客戶端在一個單一的頁面。「外部」導航,以糾正angular.js網址(直接鏈接/刷新/等)

我想弄清楚的是如何在客戶端導航被繞過時到達客戶端上的正確頁面。因此,例如,如果我點擊'about'並轉到'http://www.myapp.com/about',而不是去http://www.myapp.com,那麼我如何處理直接轉到'http://www.myapp.com/about'的用戶,我明顯可以將他們重定向到「/」,但我仍然就像他們期望的那樣,他們會'/最終''結束'。同樣,刷新也有相同的問題。如果我坐在'/ about'處,並且瀏覽器刷新,那麼這個請求會在服務器上「/ about」並繞過應用程序,所以我需要重新加載應用程序的根目錄,但是仍然回到/關於。

在此先感謝。

編輯: 感謝您的答覆,我想也許我沒有問清楚。我瞭解路由等在我的角度的應用程序。因此,在單擊'/ about'href時,將其設置爲加載「partials/about.html」。我的問題是,假設已經有效,用戶直接訪問「www.myapp.com/about」。角色應用程序在根上「生活」。所以假設服務器會重定向到'/'。這會加載應用程序,但不會對用戶期望的路線「設置」角度。所以這個問題,有沒有告訴應用程序「當你加載,去/關於」可能是基於引用或什麼的。

回答

1

你在使用什麼服務器?

您可以在路由器中創建一條全路由。 像match '*' => 'Angular#App'(Rails)的

或(快遞)

app.use(function (req, res) { 
    res.writeHeader(200, {'Content-Type': 'text/html'}); 
    res.end(indexFileContent); 
}); 
+0

我正在使用node.js,所以很酷。但是這個例子能讓用戶回到正確的網址嗎?這隻會將主頁面發回給他們吧?再次,我需要一個請求來說'/ about'被重定向到'/',並以某種方式告訴Angular,用戶''真正'在'/ about' – 2013-05-14 21:03:30

+1

好吧,我有一個'時間'的時刻。我讀過位置服務的東西等,但它沒有點擊,直到現在,你的答案。擁有所有的url或者至少所有的'application'url(我有一個/ rest的服務的/ api根)只是爲根角頁面提供角度來'弄清'它在加載時應該是的位置。 謝謝! – 2013-05-15 18:03:59

+0

很高興幫助你:)。 – Ven 2013-05-15 18:37:05

0

我認爲你是在談論角客戶端路由 - 而不是服務器端。無論如何,我的答案是假設這一點。

Angular包含一個路由服務,它允許您定義映射到基本服務器url之後的url的客戶端路由。下面是如何設置它的示例:

angular.module('myApp',[]) 
.config(['$routeProvider', function($routeProvider) { 
    $routeProvider 
     .when('/', {templateUrl: '/home-partial', controller: 'HomeCtrl'}) 
     .when('/about', {templateUrl: '/about-partial', controller: 'AboutCtrl'}) 
     .when('/contact', {templateUrl: '/contact-partial', controller: 'ContactCtrl'}) 
     .otherwise({redirectTo: '/'}); 
    }]) 

只要你有在服務器端諧音設置和控制器的設置也一樣,當用戶瀏覽到每個URL,正確的控制器和部分會拉起來,你可以選擇做任何你需要在每個控制器。

您還可以使用其他選項,我只是以這種方式使用路線。查看AngularJS documentation獲取更多信息