シングルページアプリケーションがホームページをロードし、一連のアイデアを表示したいと思います。各アイデアはアニメーション化されたフラッシュコンテナに表示され、アニメーションはアイデア間を循環するように表示されます。
アイデアは$httpを使用して読み込まれます。
$scope.flash = new FlashInterface scope:$scope,location:$location
$http.get("/competition.json")
.success (data) ->
$scope.flash._init data
ただし、履歴ナビゲーションとUXを活用するには、アドレスバーを更新して、$locationを使用して各アイデアの正しいURLを表示したいと思います。
$location.path "/i/#{idea.code}"
$scope.$apply()
このイベントはAngularJSコンテキスト、つまりFlashから発生するため、ここでは$applyと呼んでいます。現在のコントローラー/ビューを残し、ビューをリロードしないようにしたいと思います。ビューをリロードすると、フラッシュオブジェクト全体が破棄され、プリローダーサイクルが再開されるため、これは非常に悪いことです。
$ routeChangeStartをリッスンしてpreventDefaultを実行しようとしました:
$scope.$on "$routeChangeStart", (ev,next,current) ->
ev.preventDefault()
$scope.$on "$routeChangeSuccess", (ev,current) ->
ev.preventDefault()
しかし、役に立たない。$ location.pathを変更したときにビューのリロードをオーバーライドする方法を理解できれば、すべてが厄介なことになります。
私はまだAngularJSの周りをとても感じているので、目標を達成するためにアプリを構築する方法についてのアドバイスをいただければ幸いです。