0

Web コンポーネントを宣言的に定義するためのフレームワークとして AngularJS を使用する可能性を調査しています (コントローラーの必要性を可能な限り回避します)。必要な機能の大部分は、Angular の組み込みディレクティブで既に実現できますが、データを非同期に要求するために使用されるさまざまなサービスの結果を反復できるようにしたいと考えています。

必要な機能は、サービスをコントローラーに挿入し、結果をスコープに保存することで簡単に実現できますが、コントローラーをまったく必要とせずにこれを実現する方法があることを望んでいました (具体的には、手書きではなくテンプレート)。

Angular でこれを実現する組み込みの方法はありますか (たとえば、サービス呼び出しを繰り返し式に含める方法など)? そうでない場合、これを達成するための最も効果的な方法は何ですか? サービスへの参照を取得する新しいディレクティブを作成できるはずだと思いますが、これがこれを達成する正しい方法であるかどうかはわかりません。

4

1 に答える 1

2

サービスをディレクティブ定義の一部として注入するのではなく、HTML で宣言できる汎用ディレクティブを作成するには、$injector を使用できます。

<some_element ... my-directive service="myService">

指令:

myApp.directive('myDirective', function($injector) {
    return {
       link: function(scope, element, attrs) {
          var service = $injector.get(attrs.service);
          service.someMethod();
          ...
       }
    }
});

注:上記の手法が実際に機能するかどうかはまだテストしていませんが、コントローラーでこの手法を試したところ、機能しました。

この手法を有効にするには、明らかに静的サービス API を作成する必要があり、その API を使用するサービスのみを使用できます。

于 2013-02-06T16:09:06.187 に答える