如果我多个controller共享一份数据,是在某个比较上层的控制器上保存数据,还是用factory保存这个需要共享的数据,如果用service会怎么样。
为情所困2017-05-15 16:55:11
この質問は、データを使用する際のスコープ レベルでのデータのビジネス関連性がどの程度強いかによって異なります。
強い、つまり、特定のスコープがそれを使用するとき、上向きに検索することで特定の親スコープを確実に見つけることができ、その後、スコープの継承を使用してそれを共有できると確信しています。ただし、オブジェクト名の重複を避けるために、controller as
構文を使用して各コントローラーに一意の名前空間を与えることをお勧めします。実際、このデータを $rootScope
に保存してグローバルに共有することもできます (ただし、$rootScope
は可能な限り軽量であるため、お勧めできません)。最上位のグローバル コントローラーを使用して保存することもできます。 controller as
的语法给每一个 controller 唯一的命名空间以避免对象重名。实际上你甚至可以把这个数据保存在 $rootScope
来全局共享(但是不推荐,因为 $rootScope
越轻越好),或者是有一个最顶层的全局 controller 来保存也可以。
不强,就是说你无法确定何时何处会用到这个数据,那就用依赖注入咯。纯数据的话,建议用 module.value
(可变数据)或 module.constant
(不可变数据),当然也可以用 module.factory
返回一个对象(这就和 module.value
一样一样的)。module.service
常用于返回一个构造器,你可以利用它生成不同的对象实例(区别于其他的单例 service)。
实际上 module.value/constant/factory/service
全都是 module.provider
module.value
(可変データ) または module.constant
(不変データ) を使用することをお勧めします。 もちろん、module.factory code> も使用できます。 code> はオブジェクトを返します (これは module.value
と同じです)。 module.service
は、さまざまなオブジェクト インスタンス (他のシングルトン サービスとは異なる) を生成するために使用できるコンストラクターを返すためによく使用されます。 🎜
🎜実際、module.value/constant/factory/service
はすべて module.provider
のバリアント (構文糖衣) です。依存関係の注入とサービスについては公式ドキュメントをお読みください。一度読めばすべてが理解できます。 🎜返事0
滿天的星座2017-05-15 16:55:11
サービスを使用する。サービスは一般的にデータを保存するために使用され、ファクトリは通常、複数のサービスやメソッドを呼び出すために使用されます。これまたはこれをチェックしてください
滿天的星座2017-05-15 16:55:11
実際には、js オブジェクトが好きなら、ファクトリーとサービスの間に違いは見つかりません。js oop が好きなら、前者を選択してください。 。 。ある翻訳ではこのように説明されています。