2013-01-22 13 views
5

Więc nie 100% mojej strony jest "powered by AngularJS", ale część z nich to zwykły statyczny HTML, taki jak strona docelowa lub treści zorientowane na treść, czyli prosty HTML z oczywistych powodów.

Jedynym sposobem mogę wydają się link do poruszania zazwyczaj jest tak:

$routeProvider 
    .when('/plans', {templateUrl: '<%= asset_path('ng/views/start.html') %>'}) 
    # Catch all 
    .otherwise({ redirectTo: (p,loc) -> window.location = loc }) 

Czuje jak połowu wszystko powinno być prostsze jak mogłem zrobić .otherwise(false) i byłoby po prostu poruszać się normalnie. To samo dotyczy `.when ('/ something' /, false), ale nie widzę niczego w dokumentach sugerujących, że jest to możliwe.

Czy ktoś wie o lepszy sposób to zrobić?

Edit 1:

Jednym rozwiązaniem znalazłem jest użycie target='_self' w linku.

Drugim jest najwyraźniej ustawienie "podstawowego adresu URL" aplikacji, jak podano w the docs. Wtedy wszelkie linki poza tą bazą powinny nawigować normalnie. Jednak wydaje się, że nie działa tak, jak opisano, a przykład nie pasuje do tego, co sugeruje dokumentacja.

Odpowiedz

3

prostu tworząc link do niego external file

jeśli używasz adresów URL hashbang (np #/plany), to powinno być wszystko gotowe, jeśli używasz Historia HTML5 API ($ locationProvider.html5 (true)) następnie musisz nadać przestrzeni nazw swojej aplikacji (właściwie ustawić base [href]) i umieścić zawartość poza tym obszarem nazw.

odpowiedni kod:

https://github.com/angular/angular.js/blob/4df45b20d460239a0f5001fb0dd59f95e2d0e80d/src/ng/location.js#L560

Innym rozwiązaniem jest użycie target="_self" tego a elementu. Znowu powinno to być problemem tylko wtedy, gdy używany jest html5 (history pushState).

+0

Myślę, że mógłbyś mieć problem z edytowaniem tego. Spojrzałem na te dokumenty http://docs.angularjs.org/guide/dev_guide.services.$location, które wspomniały o bazowym adresie URL, chociaż przykład jest bardzo błotnisty. Wolałbym nie robić tego z atrybutem w moich znacznikach , jeśli to możliwe. –

Powiązane problemy