Jak korzystać z list rozwijanych do nawigacji Durandal?

Właśnie zacząłem pracować z Durandalem i wszystkie kawałki spadają na miejsce i używam szablonu Hot Towel, aby przyspieszyć.

Jedną z rzeczy, która mnie uderza, jest stworzenie bardziej złożonego hierarchicznego systemu nawigacyjnego niż grupa buttong. Oto, co chcę skończyć:

A B C
A1 B1 C1
A2 B2 C2

A, B i C to menu najwyższego poziomu, do których nie są dołączone żadne trasy - są po prostu symbolami zastępczymi. Będę miał widoki i modele podglądu dla A1, A2, B1, B2, C1 i C2 i będą potrzebować tych znaczników mieszania jako aktywnych łączy.

Moim najlepszym pomysłem jest teraz dołączenie menu macierzystego do adresu URL każdej trasy i kod w nav.html, który dynamicznie dodaje każdy węzeł do odpowiedniego rodzica na podstawie analizy adresu URL. Aby była w pełni dynamiczna, dynamicznie dodawałaby zarówno węzły nadrzędne, jak i węzły podrzędne.

        {
          url: 'A_A1',
          moduleId: 'viewmodels/A_A1',
          name: 'A1',
          visible: true
        }

Z Durandalem wiele poszukiwałem w hierarchicznych przykładach nawigacji, ale jeszcze niczego nie widziałem. Czy istnieje jakaś najlepsza praktyka rozszerzenia funkcji nawigacji poza prostą jednowymiarową listę? Czy pomijam niektóre funkcje routera, których nie widzę, które pozwolą mi to zrobić bez osadzania informacji o hierarchii w nazwach widoków?

EDYCJA: Właśnie oznaczyłem odpowiedź jako poprawną, mimo że nie byłem zadowolony z żadnego z przedstawionych rozwiązań. Przy wyborze struktury do abstrakcji i oddzielnej logiki, prezentacji i kontroli wydaje się głupie, aby ponownie połączyć te konstrukcje tylko po to, aby zapewnić więcej niż podstawową powłokę nawigacyjną. Przeniosłem moje wysiłki na rzecz rozwoju na angularjs, gdzie takie rzeczy stają się dużo bardziej intuicyjne i mogą utrzymać separację. Mam nadzieję, że w niedalekiej przyszłości Durandal może pójść o krok dalej i na pewno ponownie oceniam go w przyszłych projektach.

questionAnswers(2)

yourAnswerToTheQuestion