La versione breve della mia domanda è: Come cambio l'URL senza dover attivare la modifica del percorso o senza dover eseguire tutti i controller sulla pagina attualmente visualizzata?Cambiamento del percorso di posizione di AngularJs senza reimpostare tutti i controller
Dettagli:
ho un modello che viene visualizzato all'interno del <ng-view>
che ha regioni governate da 3 controllori. Nella parte superiore della pagina ho una mappa interattiva. Quando fai clic sulle regioni, trasmette un clic e un altro componente lo preleva e visualizza i dati su questa regione. Installazione davvero semplice.
Quello che mi piacerebbe fare è consentire ai miei utenti di collegarsi profondamente al contenuto. Quindi ogni volta che qualcuno clicca su un link mi piacerebbe cambiare l'URL che può essere copiato e incollato su un altro browser. Qualche altro utente potrebbe semplicemente fare clic sul link e vedere lo stesso stato visto dal primo.
Attualmente posso cambiare la posizione con il codice simile a questa:
$scope.$on('mapRegionClick', function($scope, regionCode) {
var url = generateURL(regionCode);
$scope.currentScope.$apply(function(){
$location.path(url);
});});
L'URL viene poi raccolto nel mio percorso e la mappa più dati vengono visualizzati correttamente. Lo svantaggio di questo è che ogni volta che clicco sulla mappa e l'URL cambia l'intero modello/vista viene rigenerata. Perché generare la mappa è un po 'pesante vorrei attivare solo una modifica ai dati che presentano il controller.
È possibile? Come?
Potrei fare alcune comunicazioni tra i controller e raggiungere il mio obiettivo, ma poi non sarei in grado di fare collegamenti profondi.
PS: Non voglio usare $location.search()
e reloadOnSearch=false
. i miei collegamenti devono essere belli :)
hai provato a mettere la mappa al di fuori della 'ng-view' e collegare il suo controller a quello che è collegato alla rotta usando un servizio condiviso? – akonsu
la cosa è che ho bisogno che la mappa sia all'interno di 'ng-view' per questo modello particolare perché altre parti del sito usano altri modelli in cui la mappa non fa parte di essi. – Ralphz
È un grosso peccato che l'angolare non offra un modo semplice e pulito per farlo. Adoro l'angolare, ma questa è la ragione per cui ho preferito Ember in uno dei miei progetti. –