9

$rootScope 関数とサービスの実装の違いは何ですか? セキュリティ的にもパフォーマンス的にも。

私はこれを読んだので、疑問に思っています。

アプリの特定のグローバル関数をサービスまたは $rootScope 自体に実装するのが最適かどうかを把握しようとしています。私が作っているもののアイデアを皆さんに売り込むために、私は現在、ユーザーが特定のフォームから離れた場合にユーザーにプロンプ​​トを表示するダーティフォーム機能を開発しています。この場合、グローバル関数として実装するのが最善であると判断したので、何かヒントはありますか?

返信ありがとうございます。

1月

4

2 に答える 2

8

この場合、グローバルな状態を避けるためにサービスを利用します。新しいスコープはすべて $rootScope から作成されます。新しいコントローラーまたはスコープを使用する人は、使用可能な値を持ち$rootscopeます。たとえば、最初の定義を忘れたため$rootScope.validate() に関数を定義し、コントローラーで定義した場合、何かが確実にうまくいかなくなります。$scope.validate()

これに関する Misko H. の記事がありますhttp://misko.hevery.com/code-reviewers-guide/flaw-brittle-global-state-singletons/

サービスはオンデマンドでインスタンス化されますが、$rootScope はブートストラップ中に作成され、必要な場所に挿入できます。これは、テスト容易性に適しています。

Angular は、アプリケーションによって直接的または間接的に要求されない限り、サービスをインスタンス化しません。

( http://docs.angularjs.org/guide/dev_guide.services.creating_services )

于 2013-05-02T07:34:44.830 に答える