2012-10-12 16 views
18

Czy można rozwinąć aplikację Angular.js w sposób, który zostałby wyodrębniony ze ścieżki do katalogu internetowego, w którym zostanie wdrożona?Routing w podkatalogu w Angular.js

Próbuję umieścić aplikację Angular.js w podkatalogu serwera WWW http://example.com/myproject/, ale router przekierowuje mnie do katalogu głównego serwera WWW - http://example.com.

Poniżej jest moje angularjs aplikacja:

var myproject = angular.module('myproject', []); 

myproject.config(function($routeProvider, $locationProvider) { 
    $routeProvider. 
    when('/', {templateUrl: 'partials/index.html', controller: IndexCtrl}). 
    otherwise({redirectTo: '/'}); 

    $locationProvider.html5Mode(true); 
}); 



function IndexCtrl($scope, $location) { 

} 
+1

plus jeden dla nazwy użytkownika :) – silver

Odpowiedz

25

Spróbuj ustawić <base href="/sudirectory"/> w <head></head>. Właśnie to musiałem zrobić, aby mój działał, IIRC

Słowo ostrożnie: To zepsuje się z wszelkimi znacznikami zakotwiczenia, które mają href = "#", a także będzie działał jako root dla srcs obrazu i tym podobnych.

+0

To załatwiło sprawę! Dzięki, Blesh. – sssilver

+5

Kolejna wskazówka, która może potencjalnie pomóc: nie zapomnij użyć względnych ścieżek zamiast bezwzględnych dla zasobów szablonów routera po ustawieniu . – sssilver

+1

Działa dla względnych ścieżek, ale mam wywołania AJAX, które są określone jako "getSomething /", które działałyby, oprócz tego, że musiałem ustawić je jako "/ getSomething /", ponieważ w przeciwnym razie zostałby dołączony do adresu URL, który może mieć inne informacje o routingu w to. Chcę, aby wywołania AJAX były rozpoznawane jako "moja_domena/getSomething /", ale jeśli mój router z Angularem ma mnie w "moja_domena/artykuł/1 /", zostanie on dołączony. Nie miałem innego wyjścia, jak stworzyć globalną zmienną base_url i dodać ją do wszystkich moich adresów URL AJAX. Byłoby miło ustawić to jako konfigurację w Angular, ale na szczęście projekt jest na tyle mały, że wystarczy wykonać go ręcznie. –