2017-01-14 18 views
2

たとえば、Webアプリケーションでは、特定のJSONが複数のページにわたって頻繁に使用されます。例えばのため 角度1.x:特定のシナリオコントローラ/サービスを使用する場合

{ 
    "employees":[ 
     {"firstName":"John", "lastName":"Doe"}, 
     {"firstName":"Anna", "lastName":"Smith"}, 
     {"firstName":"Peter", "lastName":"Jones"} 
    ] 
} 

ので、コントローラまたはサービスの一部として考慮されるべき のfirstName()または lastNameの()は、すべての従業員のを取得しますか?

サービスはアプリ全体で頻繁に使用されているため、コントローラはこのデータを取得しているため、それも薄くなります。

このアプローチは正しいですか?

答えて

1

は、次のオプションがあります。

  1. は、REST/HTTPを使用して、特定のコントローラで、このデータを必要とするたびにコールしてください。したがって、データを取得するために、エンドポイントのHTTP を呼び出すEmployeesServiceを作成します。
  2. データを一度呼び出して、サービスに格納します。その後、データが必要な場所にサービスを注入します。
  3. アプリが起動したときにHTTPエンドポイントからデータを取得し、ブラウザのローカルストレージまたは$ rootScope の中に保存して、どこからでもアクセスできます。最後に

、それが依存する:

  • あなたが共有する必要がどのくらいのデータを、あなたのアプリが/どのくらいいるのですか?
  • このデータをどのくらいの頻度で更新しますか?
  • このデータにアクセスする必要があるビューはどれですか?

はい、サービスでは、あなたは安全面にあります。その後、コントローラに注入してそこから使用します。どのくらいの頻度でデータがサービスに入りますか?

+0

現在、私はエンドポイントからデータを返すために小さなサービスを使用していますが、複数のコントローラがこれらのメソッドを何度も何度も定義しているため、これらのメソッドをサービスレイヤに含めてコントローラ間で共有できると考えました。 残念ながら、従来のサポートのために 'localStorage'を使用することはできません。 このデータは大量のデータであり、コントローラ内のすべてのロジックを含み、重くなります。 – Robin

関連する問題