ホームページ  >  に質問  >  本文

angular.js - Angular的controller和service、factory的问题

如果我多个controller共享一份数据,是在某个比较上层的控制器上保存数据,还是用factory保存这个需要共享的数据,如果用service会怎么样。

怪我咯怪我咯2737日前547

全員に返信(3)返信します

  • 为情所困

    为情所困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> はオブジェクトを返します (これは module.value と同じです)。 module.service は、さまざまなオブジェクト インスタンス (他のシングルトン サービスとは異なる) を生成するために使用できるコンストラクターを返すためによく使用されます。 🎜 🎜実際、module.value/constant/factory/service はすべて module.provider のバリアント (構文糖衣) です。依存関係の注入とサービスについては公式ドキュメントをお読みください。一度読めばすべてが理解できます。 🎜

    返事
    0
  • 滿天的星座

    滿天的星座2017-05-15 16:55:11

    サービスを使用する。サービスは一般的にデータを保存するために使用され、ファクトリは通常、複数のサービスやメソッドを呼び出すために使用されます。これまたはこれをチェックしてください

    返事
    0
  • 滿天的星座

    滿天的星座2017-05-15 16:55:11

    実際には、js オブジェクトが好きなら、ファクトリーとサービスの間に違いは見つかりません。js oop が好きなら、前者を選択してください。 。 。ある翻訳ではこのように説明されています。

    返事
    0
  • キャンセル返事