La mia applicazione a pagina singola carica una pagina iniziale e voglio visualizzare una serie di idee. Ciascuna delle idee viene visualizzata in un contenitore flash animato, con animazioni visualizzate per scorrere tra le idee.
idee vengono caricati mediante $ http:
$scope.flash = new FlashInterface scope:$scope,location:$location
$http.get("/competition.json")
.success (data) ->
$scope.flash._init data
Tuttavia, per beneficiare di navigazione storia e UX desidero aggiornare la barra degli indirizzi per visualizzare l'URL corretto per ogni idea con $ location:
$location.path "/i/#{idea.code}"
$scope.$apply()
Sto chiamando $ apply qui perché questo evento proviene da fuori contesto AngularJS cioè Flash. Vorrei che rimanesse il controller/vista corrente e che la vista non venga ricaricata. Questo è pessimo perché ricaricare la vista determina il lancio dell'intero oggetto flash e il ciclo del preloader che ricomincia.
Ho provato ad ascoltare a $ routeChangeStart fare un preventDefault:
$scope.$on "$routeChangeStart", (ev,next,current) ->
ev.preventDefault()
$scope.$on "$routeChangeSuccess", (ev,current) ->
ev.preventDefault()
ma senza alcun risultato. L'intera cosa sarebbe hunky dory se potessi immaginare un modo per sovrascrivere la vista ricaricare quando cambio $ location.path.
Mi sento ancora molto a mio agio con AngularJS quindi sarei lieto di qualsiasi suggerimento su come strutturare l'app per raggiungere il mio obiettivo!
Sono in ritardo ma ho appena riscontrato un problema simile. C'è una ragione per cui non potresti mettere le 'idee' al di fuori della direttiva' ng-view' e dare loro il proprio controller, che interagisce con i controller all'interno di 'ng-view' tramite l'ereditarietà dell'ambito? Per lo più mi sto chiedendo perché è così che ho risolto il mio problema e mi chiedo se ha qualche difetto, o se dovrei passare alla risposta accettata. – jclancy
Se oggi risolvessi questo problema, sarei molto tentato di usare ui-router con la sua capacità di visualizzazione gerarchica. Non sono sicuro che risolverebbe il problema specifico dell'URL che avevo qui, ma avrei bisogno di più ricerche per un po '...! – chrisbateskeegan
OK, grazie per avermi indicato in quella direzione e grazie per aver risposto a un commento così tardivo! – jclancy