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, поэтому буду рад любым советам о том, как структурировать приложение для достижения моей цели!

Ответы на вопрос(6)

Ваш ответ на вопрос