Angular アプリケーション全体でグローバルにアクセスできるオブジェクトが必要であり、喜んでこのオブジェクトを価値のあるサービスに入れました。
残念ながら、このオブジェクトは別のサービスによって計算されており、myService
同じvalue
サービスに注入できませんでした。
ATM、私は次のようなもので目標を達成しました:
グローバル サービス コード
app.service('myService', function() {
this.foo = function() {
// some code that returns an object
return computedObject
}
})
app.run(function ($rootScope, myService) {
$rootScope.global = {dbObject: myService.foo()}
})
$rootScope
そして、単に注入する
だけで私を喜ばせる任意のコントローラーで使用できます。ただし、そのいまいましいオブジェクトが必要な場所に
全体を注入する必要は好きではありません。$rootScope
チームが指定するので
もちろん、グローバルな状態は最悪であり、$rootScope は慎重に使用する必要があります。これは、(願わくば) どの言語でもグローバル変数を使用する場合と同様です。特に、コードには使用せず、データのみに使用してください。$rootScope に関数を配置したい場合は、ほとんどの場合、必要な場所に挿入でき、より簡単にテストできるサービスに配置することをお勧めします。
逆に、データのビットを保存して返すことだけを目的とするサービスを作成しないでください。
おそらく、サービスをサービス値に注入する方法を知っていますか?
または、私が活用できる他のAngularのベストプラクティスはありますか?
大事なお知らせを一つ忘れていました
オブジェクトの計算は非常に計算量が多い可能性があるため、ページからページに移動するたびにオブジェクトを再計算したくはありません。