AngularJS Пейджинг с $ location.path, но без перезагрузки ngView
Мое одностраничное приложение загружает домашнюю страницу, и я хочу показать ряд идей. Каждая из идей отображается в анимированном флеш-контейнере с анимацией, отображаемой для переключения между идеями.
Идеи загружаются с использованием $ 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, чтобы сделать protectDefault:
$scope.$on "$routeChangeStart", (ev,next,current) ->
ev.preventDefault()
$scope.$on "$routeChangeSuccess", (ev,current) ->
ev.preventDefault()
но безрезультатно. Если бы я мог найти способ переопределить перезагрузку представления, то изменил бы $ location.path.
Я все еще очень хорошо разбираюсь в AngularJS, поэтому буду рад любым советам о том, как структурировать приложение для достижения моей цели!