2016-08-26 12 views
7

Szukam czegoś, co byłoby nieco równoznaczne z wersją 1.0 UI-Routera $rootScope.$on('$stateChange...'. Zdaję sobie sprawę z nowej usługi $ przejściowych, ale nie mogę dokładnie określić, jak zmusić ją do pracy w ten sam sposób.

Utworzyłem minimalną powtarzalne plunker poniżej, aby spróbować i podkreślić jak Obecnie używam usługi i nadzieję uzyskać pewien wgląd w nowym podejściu do realizacji tego w wersji 1.0 + UI-Router

https://plnkr.co/edit/ddabHc9oXEbqMoNZHYs2?p=preview

Nie tylko przejście nie wydaje się uruchamiać na każdym przejściu, ale nie uruchamia się w ogóle w przypadku przejść dla dzieci. Czy to oczekiwane zachowanie? Wygląda na to, że wystrzeliwuje stany, ale mimo to wydaje się, że strzela tylko raz (potencjalnie z powodu buforowania?). Pomyślałbym, że nawet jeśli "stan" zostanie załadowany przez pamięć podręczną, to nadal dochodzi do "przejścia".

Interesuje Cię znajomość pożądanej funkcjonalności tutaj. Dzięki!

Odpowiedz

8

1) Twój plunker jest zepsuty, a błąd powoduje, że wyniki są mylące. Trzeba dodać utwór do ng-repeat zatrzymać błędy w konsoli:

> angular.js:13920 Error: [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: transition in transitions, Duplicate key: string:Started loading main, Duplicate value: Started loading main

2) do wzorca * pasuje tylko do jednego poziomu państwowego. Użyj opcji **, aby dopasować "chciwy" (następnie dopasuje również stan podrzędny). { to: '**' }

3) Wszystkie kryteria są opcjonalne. Jeśli zostaną pominięte, niejawnie pasują do wszystkiego. Zamiast { to: '**' }, wolę pustym kryteria sprzeciw {}

4), aby zrozumieć przejścia lepiej użyć UI-Router Visualizer i włączyć usługę śledzenia ui-router dla przejścia (sprawdź konsolę). app.run($trace => $trace.enable('TRANSITION'))

Oto zaktualizowana upadać z tymi zmianami: https://plnkr.co/edit/AO49n8biBBEnfnsxPbns?p=preview

Przeczytaj documentation for Transition Service który opisuje każdy hak cyklem życia:

  • onBefore
  • onStart
  • onExit (hak stan)
  • onRetain (stan hook)
  • onEnter (hak stan)
  • onFinish
  • onSuccess
  • onError

Przeczytaj o hook criteria objects uzyskać więcej informacji o tym, jak można kierować konkretne przejścia.

+0

Dzięki za szczegółową odpowiedź! Inne niż # 1 (co jest trochę zawstydzające) Mam nadzieję, że to pomoże innym, ponieważ nie widziałem składni "**" opisanej w poprzedniej dokumentacji. Dzięki za smakołyk o opcjonalnych kluczach. Z pewnością wykorzystam wizualizer od teraz –