私はAngularにかなり慣れていないので、これを処理する最善の方法は何だろうと思っています。私のアプリは、アプリの状態と現在読み込まれているデータを追跡するサービスで構成されています。これをすべてのコントローラーに挿入して、アプリの状態をコントローラーと共有し、サービスを使用してコントローラー間で変更できるようにします。サービスの概要は次のとおりです。
app.factory('AppStateService', function() {
return {
selected_section: "blog",
data_of_selected_section: {here_comes_data_from_an_api}
}
}
前述のように、これをすべてのコントローラーに挿入し、それらをコントローラー スコープにバインドします。これにより、すべてのコントローラーでこれらのプロパティを変更でき、これは完全に機能します。ただし、一部のプロパティが変更されるたびに、サービスが API への $http 呼び出しを自動的に実行するようにしたいと考えています。データが API から戻ってきたら、このデータをプロパティに割り当てて、コントローラーがこのデータに基づいて更新できるようにします。
たとえば、上記の例では、コントローラーがselected_section
「ブログ」から「メイン」に変更された場合、サービスに $http 呼び出しを実行させ、返されたデータを入れdata_of_selected_section
てコントローラーに伝達できるようにします。もちろん、コントローラーから直接これを実行して、そこから結果をサービスにプッシュすることもできますが、その場合、各コントローラーでそのコードを複製する必要があります。したがって、私はむしろサービスがそれを単独で行うことを望んでいます。
これを行う最善の方法は何ですか?$watch
サービスのどこかにまたはどこかに組み込む必要があると思いますが、$watchCollection
その方法を正確に理解するのに苦労しています。特に、間違った方法で行うとパフォーマンスが低下する可能性があることは容易に想像できたからです。
余談ですが、私がこのようにしたい理由は、データの視覚化を行っているためです。したがって、変更されるのはほとんどがインターフェイスであり、データではありません。したがって、データとアプリの状態を「グローバルに」サービスに保存したいと思います。それが理にかなっているのかどうかはわかりません。どんな助けでも大歓迎です!