Ho una pagina di ricerca che consente all'utente di eseguire il drill-down in categorie e/o immettere termini di ricerca. Voglio dare all'utente la possibilità di usare il pulsante Indietro per annullare queste azioni. Utilizzando AngularJS, come posso avere questa pagina aggiungere voci alla cronologia dei browser per ciascuna di queste azioni. Non riesco a utilizzare lo stato di stampa HTML5.AngularJS aggiungere alla cronologia del browser senza ricaricare la pagina e senza HTML5 pushstate
AngularJS aggiungere alla cronologia del browser senza ricaricare la pagina e senza HTML5 pushstate
risposta
ho trovato che posso fare questo cambiando i parametri di stringa di query senza ricaricare la pagina utilizzando la risposta su reloadOnSearch da here:
$routeProvider
.when('/items', {
controller: 'ItemsCtrl',
templateUrl: '/templates/items',
reloadOnSearch: false
},
...
);
E poi, da quella stessa risposta, impostando la stringa query utilizzando:
$location.search('id', 123);
Infine rilevamento cambia rotta utilizzando la risposta da here:
$scope.$on('$routeUpdate', function(){
$scope.sort = $location.search().sort;
$scope.order = $location.search().order;
$scope.offset = $location.search().offset;
});
È possibile disattivare la modalità HTML5 con $locationProvider.html5Mode(false)
.
Quindi utilizzare solo URL hashbang come <a href="#!/search">Search</a>
, verranno aggiunti alla cronologia del browser.
È possibile modificare il percorso senza che il controller venga reinizializzato? – adam0101
Non credo sia possibile aggiungere voci alla cronologia del browser senza utilizzare lo stato di stampa HTML5 (almeno, senza cambiare effettivamente la posizione corrente).
paginaIl MDN discute l'introduzione di pushState e come si permette questa nuova funzionalità (implicando che non era possibile prima): https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history
EDIT: Se il motivo non è possibile utilizzare HTML5 pushState è perché di supporto del browser, vedere questo polyfill: https://github.com/browserstate/history.js
Lungo con il codice reloadOnSearch riportato di seguito per tenere traccia dell'evento di cambio posizione che ha funzionato per me.
$scope.$on('$locationChangeSuccess', function() {
$scope.sort = $location.search().sort;
$scope.order = $location.search().order;
$scope.offset = $location.search().offset;
});
Anche se potrebbe essere d'aiuto per qualcuno.
- 1. Aggiorna l'URL del browser senza ricaricare la pagina
- 2. Ricarica un IFRAME senza aggiungere alla cronologia
- 3. Modifica dell'URL senza ricaricare la pagina
- 4. event.preventDefault() con Angularjs e UIRouter rimuove la cronologia del browser
- 5. Backbone.js cambia URL senza ricaricare la pagina
- 6. Modifica URL barra degli indirizzi del browser con jQuery e Ajax senza ricaricare la pagina
- 7. Invia modulo senza ricaricare la pagina
- 8. httpd.conf e HTML5 pushstate()
- 9. Modifica di una stringa di query senza ricaricare la pagina
- 10. AngularJS La modalità HTML5 degrada fino a ricaricare la pagina intera invece di hashbang
- 11. Come mantenere attiva la sessione senza ricaricare la pagina?
- 12. Come ricaricare un div senza ricaricare l'intera pagina?
- 13. Duplica una scheda in Chrome senza ricaricare la pagina?
- 14. come aggiornare una pagina Django senza ricaricare una pagina?
- 15. Pulsante indietro dell'API cronologia HTML5 con carichi di pagina parziali
- 16. HTML5/jQuery: pushState e popState - deep linking?
- 17. Aggiunta del parametro all'URL senza aggiornamento
- 18. Passaggi jQuery - Ripristino guidato senza ricaricare la pagina
- 19. Documento pronti presentazione e cronologia del browser
- 20. history pushState e scroll position
- 21. In che modo GitHub cambia l'URL senza ricaricare una pagina?
- 22. jQuery transizione pagina e cronologia browser
- 23. Modificare i parametri del percorso senza ricaricare in angolare 2
- 24. Utilizzo di HTML5 pushstate su angular.js
- 25. Cancella cronologia html creata da pushState all'aggiornamento
- 26. Aggiorna la pagina nel browser senza inviare nuovamente il modulo
- 27. Modifica iframe.src senza voce nella cronologia dell'oggetto
- 28. Come ricaricare uno script Greasemonkey quando AJAX modifica l'URL senza ricaricare la pagina?
- 29. Transclude in AngularJS senza aggiungere nuovo elemento
- 30. PDF incorporato: numero di pagina aperto senza ricaricare il documento
Esattamente quello che stavo cercando. Grazie! – LT86