Widzę zdarzenie $routeChangeStart
w moim kontrolerze, ale nie widzę, jak powiedzieć Angularowi, żeby został. Muszę wyskoczyć coś w stylu "Czy chcesz ZAPISZ, USUNĄĆ lub ANULOWAĆ?" i pozostanie na aktualnej "stronie", jeśli użytkownik wybierze anuluj. Nie widzę żadnych zdarzeń, które umożliwiają słuchaczom anulowanie zmiany trasy.AngularJS - Wykrywanie, przeciąganie i anulowanie zmian trasy
Odpowiedz
Słuchasz niewłaściwego wydarzenia, trochę googlowałem, ale nie znalazłem niczego w dokumentach. Szybki test tego:
$scope.$on("$locationChangeStart", function(event){
event.preventDefault();
})
W globalnym kontrolerze uniemożliwiono zmianę lokalizacji.
Udokumentowanym sposobem wykonania tej czynności jest użycie właściwości resolve tras.
Dokumentacja serwisowa "$ route" mówi, że zdarzenie "$ routeChangeError" jest uruchamiane, jeśli którekolwiek z obietnic "rozwiązania" zostanie odrzucone. 1 To oznacza, że możesz użyć "$ routeProvider", aby określić funkcję, która zwraca obietnicę, która zostanie później odrzucona, jeśli chcesz zapobiec zmianie trasy.
Zaletą tej metody jest to, że obietnica może zostać rozwiązana lub odrzucona na podstawie wyników zadań asynchronicznych.
Ale nawet po odrzuceniu adres URL przeglądarki zostanie zmieniony. Jak sobie z tym poradzić? – FelikZ
Możesz zmienić lokalizację z powrotem za pomocą usługi, która obserwuje zakres główny dla $ locationChangeSuccess. Właśnie to usługa $ route używa wewnętrznie, ale nie wiem, czy można w pełni polegać na jej publicznym zachowaniu w przyszłości. Jednak możesz teraz połączyć to z $ routeChangeError, aby przywrócić starą lokalizację. Być może warto zapytać o to opiekunów. – tilgovi
@FelikZ FYI, odpowiednim zagadnieniem do obejrzenia jest https://github.com/angular/angular.js/issues/2100 – Sam
$scope.$watch("$locationChangeStart", function(event){
event.preventDefault();
});
Można zrobić tak jak dobrze. Korzyści z wykonywania tego sposobu jest to, że nie wyzwala poprzez if() oświadczenie z $ na ... jak dobrze zobaczyć że poniżej kod wywoła bez względu na warunek:
if(condition){ //it doesn't matter what the condition is true or false
$scope.$on("$locationChangeStart", function(event){ //this gets triggered
event.preventDefault();
});
}
- 1. Wykrywanie zmian w NSUserDefaults
- 2. angularjs: zapobieganie trasy zmienia
- 3. angularjs Obserwowanie zmian korzeni
- 4. HTML5 Przeciąganie i upuszczanie - wykrywanie folderów w Safari (FileList, File)
- 5. Subskrybuj Property Zmian w angularjs
- 6. Wykrywanie zmian w modelu; php yii framework
- 7. Wykrywanie zmian w komórkach w angular.js i ng-grid
- 8. Wykrywanie zmian stanu dokonanych w adapterze Bluetooth?
- 9. Wykrywanie zmian w systemie plików Java
- 10. Wykrywanie zmian kolumn w wyzwalaczu aktualizacji PostgreSQL
- 11. Wykrywanie zmian w EditText (TextWatcher nieskutecznego)
- 12. jQuery- Wykrywanie zmian w treści pola SPAN
- 13. Wykrywanie zmian w polu jsonowym PostgreSQL
- 14. DbContext AutoDetectChangesEnabled ustawiony na fałszywe wykrywanie zmian
- 15. Wykrywanie zmian obiektu CSSStyleDeclaration w JS
- 16. Wykrywanie zmian kart przeglądarki za pomocą javascript
- 17. AngularJS: Odczytaj parametr trasy z kontrolera
- 18. AngularJs: Ukryj element nawigacyjny na podstawie trasy?
- 19. Trwa przeciąganie i przeciąganie zdarzeń Jquery w Jquery UI
- 20. Przeciąganie i upuszczanie * FROM * przeglądarki?
- 21. Przeciąganie i przesyłanie plików przeciągnij
- 22. AngularJS: Rozwiązać w RouteProvider - wykrywanie sukcesu/niepowodzenia?
- 23. Załaduj ponownie trasy Express.js do zmian bez restartowania serwera
- 24. Anulowanie PendingIntent
- 25. trasy kręgosłupa - wykrywanie przycisku wstecz wstecz przeglądarki naciśnij
- 26. Wykrywanie zmian w obiektach wewnątrz macierzy w Angular2
- 27. Rozszerzenie iOS - wykrywanie "zmian stanu rozszerzenia" (tło/pierwszy plan)
- 28. Wykrywanie zmian tekstu UITextField z powodu cofnięcia Shake'a?
- 29. DotNet migracje ef automatyzacja: Wykrywanie zmian w migracjach
- 30. Współbieżność Java: koordynowanie wielu zadań i anulowanie
jak kontynuować zmianę? Na przykład - wyświetl komunikat "Czy chcesz zmienić stronę?" - Tak - Nie. Tak - kontynuuj, zatrzymując się na "NIE". –
To nie jest dobre, jeśli potrzebujesz dostępu do parametrów trasy. Naprawdę irytujące, że trasy nie można anulować od zdarzenia rozpoczęcia zmiany trasy. – KingOfHypocrites
Nie. W ogóle nie anuluje zmiany lokalizacji trasy, AFAICT. Wydaje się, że event.preventDefault() nie robi nic. –