6

Mam indeks obsługujący statyczne menu nagłówków, a poniżej widok ng oparty na trasie wybiera odpowiedni szablon. Jak to na przykład:Wiele szablonów AngularJS na jednej stronie

<navbar> 
    ... 
</navbar> 
<div ng-view> 
</div> 

Wszystko jest dobrze do tej pory, kiedy konkretna trasa jest trafiony, szablon jest ładowany w tym pojemniku z powiązanym z nim sterownika.

Teraz mam inną stronę, która jest ładowana wewnątrz ng-view, i jest uruchamiana, kiedy trafi się "/ dashboard" url. Problem polega na tym, że strona pulpitu ma menu paska bocznego, które musi również zawierać pewną logikę routingu (mniej więcej). Po kliknięciu łącza z menu paska bocznego muszę załadować tylko lewą stronę strony (nie cały kontener widoku ng).

ja zidentyfikowali dwa rozwiązania:

1) Utwórz dyrektywę, która sklepach menu paska bocznego i wstrzyknąć go we wszystkich stronach, które są obsługiwane przez menu bocznego ==> routingu jest nadal obsługiwane przez ng- widok.

2) Wykorzystanie ng obejmują i mieć trochę logiki routingu na stronie deski rozdzielczej tak:

<a ng-click="templateType = 1">Template 1</a> 
<a ng-click="templateType = 2">Template 1</a> 

<div ng-if="templateType === 1" ng-include="template1" 
    ng-controller="Template1Controller"></div> 
<div ng-if="templateType === 2" ng-include="template2" 
    ng-controller="Template2Controller"></div> 

Czy istnieje inne podejście? Lub jaka jest najlepsza praktyka w obsłudze zarówno paska bocznego, który obsługuje niektóre trasy, jak i statycznego menu obsługującego inne trasy, z zaznaczeniem, że menu paska bocznego jest dostępne tylko na niektórych trasach.

Dostarczyłem rysunek farby, w nadziei, że mogę lepiej wyjaśnić mój problem.

enter image description here

+1

Dlaczego nie używacie kątową-UI-routera? – nikhil

+3

Można również sprawdzić [segment trasy kątowej] (http://angular-route-segment.com/). –

+0

@nikhil Myślałem, że być może istnieje rozwiązanie wbudowane bez dodawania kolejnej zewnętrznej zależności. –

Odpowiedz

7

można wykorzystywać UI-Router i dać szansę na zagnieżdżonych widoki. Oto really good tutorial. Myślę, że to, co próbujesz osiągnąć, jest wymienione na końcu samouczka.

+0

To nie działa dla mnie, ponieważ wymaga dużo pracy, modyfikując bieżącą aplikację, aby skorzystać z implementacji routingu. –

+1

UI-Router nie różni się niczym od ngRoutera. Obsługuje stany przed trasami, routeParams stają się stateParams, a ui-view zastępuje oryginalną dyrektywę ng-view. Następnie możesz odwoływać się do twoich tras za pomocą ui-sref (naprawdę przydatne) lub po prostu z href. Ale rozumiem twój punkt widzenia. Sądzę, że możesz użyć parametrów ngRoute do określenia podelementu do wyświetlenia, ale może on być nieco bardziej złożony. :) – Freezystem

+1

UI-Router wydaje się naprawdę fajny, ale moja aplikacja ma ~ 150 różnych tras rozłożonych na wiele modułów i wymagałoby modyfikacji każdego z nich w celu dopasowania implementacji UI-Routera. W tym momencie wolałbym zrobić dyrektywę dla paska bocznego i wstrzykiwać ją wszędzie, gdzie jej potrzebuję. –