Одностраничное приложение загружает домашнюю страницу, и я хочу отобразить серию идей. Каждая из идей отображается в анимированном флэш-контейнере с анимацией, отображаемой для циклического перехода между идеями.
Идеи загружаются с помощью $http:
$scope.flash = new FlashInterface scope:$scope,location:$location
$http.get("/competition.json")
.success (data) ->
$scope.flash._init data
Однако, чтобы воспользоваться навигацией по истории и UX, я хочу обновить адресную строку, чтобы отобразить правильный URL-адрес для каждой идеи, используя $location:
$location.path "/i/#{idea.code}"
$scope.$apply()
Я призываю $apply здесь, потому что это событие происходит из-за контекста AngularJS, то есть Flash. Я бы хотел, чтобы текущий контроллер/вид оставался, и чтобы представление не перезагружалось. Это очень плохо, потому что перезагрузка представления приводит к тому, что весь объект флэш-памяти выбрасывается, и цикл предварительного натяжения начинается снова.
Я пробовал прослушивать $routeChangeStart, чтобы сделать preventDefault:
$scope.$on "$routeChangeStart", (ev,next,current) ->
ev.preventDefault()
$scope.$on "$routeChangeSuccess", (ev,current) ->
ev.preventDefault()
но безрезультатно. Все это было бы hunky dory, если бы я мог найти способ переопределить перезагрузку вида, когда я изменяю путь $location.path.
Я все еще очень чувствую свой путь вокруг AngularJS, поэтому я был бы рад любым указателям на то, как структурировать приложение для достижения моей цели!