Mi aplicación de una sola página carga una página de inicio y quiero mostrar una serie de ideas. Cada una de las ideas se muestra en un contenedor flash animado, con animaciones que se muestran para alternar entre las ideas.
Las ideas se cargan mediante $ http:
$scope.flash = new FlashInterface scope:$scope,location:$location
$http.get("/competition.json")
.success (data) ->
$scope.flash._init data
Sin embargo, para beneficiarse de la navegación historia y UX que deseen actualizar la barra de direcciones para mostrar la URL correcta para cada idea usando $ ubicación:
$location.path "/i/#{idea.code}"
$scope.$apply()
Llamo $ aplica aquí porque este evento proviene del contexto AngularJS, es decir, Flash. Me gustaría que el controlador/vista actual permanezca y que la vista no se vuelva a cargar. Esto es muy malo porque al volver a cargar la vista, el objeto flash completo se descarta y el ciclo del precargador comienza de nuevo.
He intentado escuchar por $ routeChangeStart hacer un preventDefault:
$scope.$on "$routeChangeStart", (ev,next,current) ->
ev.preventDefault()
$scope.$on "$routeChangeSuccess", (ev,current) ->
ev.preventDefault()
pero fue en vano. Todo el asunto sería genial si pudiera encontrar una manera de anular la recarga de la vista cuando cambie $ location.path.
Todavía estoy sintiendo las cosas a mi manera en AngularJS, ¡así que estaría contento de cualquier sugerencia sobre cómo estructurar la aplicación para lograr mi objetivo!
Llegué tarde pero acabo de encontrar un problema similar. ¿Hay alguna razón por la que no pueda poner las 'ideas' fuera de la directiva' ng-view' y darles su propio controlador, que interactúa con los controladores dentro de 'ng-view' a través de la herencia del alcance? Casi siempre estoy preguntando porque así es como resolví mi propio problema y me pregunto si tiene alguna deficiencia, o si debería cambiar a la respuesta aceptada. – jclancy
Si estuviera resolviendo este problema nuevamente hoy, estaría muy tentado de usar el enrutador ui con su capacidad de vista jerárquica. No estoy seguro de que eso resuelva el problema específico de URL que tenía aquí, sin embargo, ¡necesitaría más investigación desde hace un tiempo ...! – chrisbateskeegan
OK, gracias por indicarme en esa dirección, ¡y gracias por responder a un comentario tan tardío! – jclancy