29

私がAngularJSについて知っている限り、これは今日出回っている興味深いライブラリの1つです。私はゆっくりと角の力を理解していて、それを真剣に愛しています。いくつか疑問がありますが、それらを明確にしてもらいたいと思います。いくつかのバックグラウンド作業を行った後でも、それらがどのように行われるのか理解できません

  1. たとえば、アプリにモジュールがあり、そのためにディレクティブが作成されています。さらに、アプリにモジュールをいくつか追加し、別のモジュール用に作成された既存のディレクティブを再利用したいとします。どうすればそれを達成できますか。フィルタ、構成などに適用されるモジュールだけではありません。

  2. モジュール内にサブモジュールを定義できますか?

  3. コントローラーを要素に動的に追加するにはどうすればよいですか。静的であってはなりません。つまり、htmlマークアップを使用しng-controllerます。

  4. すべてのモジュール間で物事を共有したい場合、どうすればよいですか。たとえば、アプリ内のすべてのモジュールの外部で変数を定義し、モジュール内でそれらにアクセスしたいだけです。それは可能ですか、私はこの疑問を持っています個々のスコープ、共有スコープ、rootScopeなどで完全に機能するためです。

どんな助けでもいただければ幸いです。

4

3 に答える 3

51

Q:たとえば、アプリにモジュールがあり、そのためにディレクティブが記述されています。さらにいくつかのモジュールをアプリに追加し、別のモジュール用に記述された既存のディレクティブを再利用したいとします。どうすればそれを達成できますか。フィルタ、構成などに適用されるモジュールだけではありません。

モジュールを宣言するときは、その依存関係を指定します。したがって、次のようなディレクティブがある場合:

angular.module( 'moduleA', [] )

.directive( 'myDirective', function () {
  // ...
});

別のモジュールからそのモジュールを要求できます。

angular.module( 'moduleB', [ 'moduleA' ] );

の配列引数angular.moduleは、依存関係のリストです。

Q:モジュール内にサブモジュールを定義できますか?

モジュールは技術的にはすべて独立していますが、それを偽造することは非常に一般的です。moduleAしたがって、次のように「サブモジュール」で定義できます。

angular.module( 'moduleA.one', [] );
angular.module( 'moduleA.two', [] );

angular.module( 'moduleA', [
  'moduleA.one',
  'moduleA.two'
]);

また、開発者/読者には、とがの一部であることは明らかmoduleA.oneですmoduleA.twomoduleA、別のモジュールが依存している場合はいつでもmoduleA、その2つのサブモジュールも含まれます。

しかし、技術的には、これらはすべて独立しているため、必要に応じてmoduleB必要になる場合もあります。moduleA.two

Q:コントローラーを要素に動的に追加するにはどうすればよいですか?静的であってはなりません。つまり、htmlマークアップng-controllerを使用します。

これはおそらく良い考えではありません。「ビュー」は公式記録です。あなたのユースケースは何ですか?

Q:すべてのモジュール間で物事を共有したい場合、どうすればよいですか。たとえば、アプリ内のすべてのモジュールの外部で変数を定義し、モジュール内でそれらにアクセスしたいだけです。それは可能ですか。これは、個々のスコープ、共有スコープ、rootScopeなどで完全に機能するためです。

あなたが何を求めているのか理解できません。しかし、モジュールで何かを定義するときは、上で説明したように、それを要求するだけで他のモジュールからアクセスできます。ただし、AngularJSアプリでは、「すべてのモジュールの外」に何かwindowが存在する必要があります。それ以外の場合はグローバルスコープ(例)で定義されていないため、すべてがモジュール内にある必要があります。これは悪い習慣です。


モジュールを構造化して大きなメリットを得る方法をよりよく理解するには、ngBoilerplateキックスターターをチェックしてください:http: //ngbp.github.io/ngbp/。モジュール構造は、コードの再利用のために特別に設計されており、実際にこれらの概念の多くを示しています。

これらのいずれかについて自由に詳しく説明してください。回答を修正します。

于 2013-03-03T20:36:56.413 に答える
5

最も簡単な方法

最も簡単な方法は、すべての共有可能なディレクティブとその他の部分をngモジュールに追加することです。

angular
    .module("ng")
    .directive("myDirective", function() {
        ...
    })
    .filter("MyFilter", function() {
        ...
    });

これは最も簡単な方法(一種の設定と忘れ)です。ディレクティブスクリプトをHTMLに簡単にドロップして、自然にそれを必要とする新しいモジュールを開発するときに忘れることができるからです。

このテクニックについて他に何が良いか

共有可能なものをngモジュールに追加するのが賢明なのはなぜですか?特定のngAppモジュールを定義せずng-app、HTML / BODYに設定し、インライン角度ディレクティブのみを実行する単純なページがアプリにある可能性があるためです。

ngモジュールにディレクティブを追加すると、これらのページでもディレクティブを使用できます。

<html>
    <body ng-app>
        <div my-directive>
        ...
        </div>
    </body>
</html>
于 2014-02-07T16:00:53.520 に答える
0

アプリの最初にdivを作成して、そのスコープが必要なだけ大きくなるようにすることはできませんか?

<div ng-controller="uberController as uber">

    ....

    other controllers and html code here

    ....
</div>

uber div内のすべてのものは、uberコントローラーを使用できます。

于 2014-07-25T18:05:18.763 に答える