2016-08-11 5 views
1

私は最初にタブを使ったバージョンのアプリケーションを完成させました。 tabsを使用して、私がページにナビゲートすると、最初にビューが開始され(APIからデータを取り出して表示する)、そこから移動して戻ってくると、リロードする必要はありませんでした。コントローラーがもう一度動かなかったので、それはそうだった。Angular2/Ionic2 - ナビゲーションのコントローラーの再ロードを防ぎます。

私はIonic2 side menu starterを実装しており、うまく設定されているようです。しかし、たとえば、私のポッドキャストページに移動してトラックを再生するとき、私が離れて移動すると、トラックは引き続き再生されます(これは私によっては問題ありません)。しかし、再びポッドキャストページに移動すると、それはまったく新しいインスタンスのようになります。トラックは再生していないと表示され、開始時には進行状況バーが表示され、再生をもう一度押すことができます。同時に。基本的にコントローラ全体が新しいインスタンスを起動します。これはつまり、私がページに移動するたびに私のHTTPリクエストが行われていることを意味しています(これは何らかのキャッシュを設定すると問題にはならないでしょうが、主な悩みはポッドキャストの進行/状態の問題です)。

こちらのアドバイスやアドバイスはありますか?

ありがとうございます!

答えて

1

一般的に言えば、私は共有サービスを使用して、そのことが起こらないようにします。アプリコンポーネントのプロバイダ配列に含まれているサービスとを使用することで、いくつかの情報を保存してアプリケーション全体で利用できるようになります(シングルトンになります)

しかし、 :

しかし、例えば(これは 私のことで結構です)、私は離れて移動するとき、トラックが再生され続け、私のPodcastのページに移動し、トラックを再生、 。

この場合、didLeave()メソッドを使用すると、トラックを停止できます。その方法の詳細については、hereを参照してください。私はトラックを止めるだけでなく、あなたが聞いていたトラックの現時点とおそらくあなたが聞いていた曲のIDを共有サービス(例えば)に保存します。

私はポッドキャストページに再び移動しかし

、そのそれの全体 新しいインスタンスのように:開始時に、プログレスバー をプレイしていないとして示すトラック、そして私は、プレイを押すことができますよ同じ時刻にトラックが再生される の2つのインスタンスが再び発生します。基本的にコントローラー全体が新しいインスタンスを起動します。 あなたは再びそのページに戻る場合

だから、あなたは歌のidはあなたが前に聞いていたし、それは同じだ場合、あなたはに格納された情報を使用できるのと同じであるかどうかを確認するためにwillEnter()メソッドを使用することができますポッドキャストの状態を設定します(保存した値でプログレスバーを設定したり、再生ボタンの代わりに一時停止ボタンを表示するなど)。

だからこれは私のHTTP要求が を私はそのためのキャッシュのいくつかの並べ替えを設定した場合、私が思う 問題の少ないページ(に移動するたびに作られたが、私の され得ることをも意味し主な煩さは、ポッドキャストの進行/状態の問題です)。

また、曲のIDを使用して行われたhttp要求の量を減らすこともできます。あなたが今聞いているポッドキャストが、あなたが聞いていた前のポッドキャストと同じであれば、おそらくあなたはhttp要求を避けることができます。

これらの項目の中には、アプリケーションのコンテキストで意味をなさないものがある場合は、これらの問題を修正するのに役立つアイディアです。

関連する問題