1

私は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その方法を正確に理解するのに苦労しています。特に、間違った方法で行うとパフォーマンスが低下する可能性があることは容易に想像できたからです。

余談ですが、私がこのようにしたい理由は、データの視覚化を行っているためです。したがって、変更されるのはほとんどがインターフェイスであり、データではありません。したがって、データとアプリの状態を「グローバルに」サービスに保存したいと思います。それが理にかなっているのかどうかはわかりません。どんな助けでも大歓迎です!

4

1 に答える 1