検索

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

angular.js - Angular でコントローラー関数を宣言するとき、$scope は仮パラメーターですか、それとも実際のパラメーターですか?

Angular を初めて使用するため、少し混乱しています。例として次のコントローラー関数を取り上げます。

リーリー

これは関数宣言です。$scope は仮パラメータであるべきですよね?ただし、$scope を s などの別の識別子に変更しても機能しません。 $scope が、hello 関数が呼び出されたときに渡される実際のパラメータであることがわかります。しかし、これら 3 行のコードは関数宣言であるのに、実際のパラメータが渡されるのはなぜでしょうか?

これは通常の関数宣言ではないことにおそらく気づきましたが、おそらく Angular のコントローラー関数バインディング メカニズムと関係があるのではないでしょうか?正確にはどのように見えますか?

世界只因有你世界只因有你2776日前807

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

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-15 16:52:49

    この種のパラメーターの受け渡しによる依存関係の取得は、AngularJS の主要な機能であり、依存関係注入の現れの 1 つです。
    しかし、パラメーターを宣言するだけで依存関係を取得できるのはなぜでしょうか?

    AngularJS は $injector を使用して、$injector管理依赖的查询与加载,比如

    // 使用注入器加载应用
    var injector = angular.injector(['ng', 'myApp']);
    // 通过注入器加载$controller服务
    var $controller = injector.get('$controller');
    var scope = injector.get('$rootScope').$new();
    // 加载控制器并传入一个作用域
    var MyController = $controller('MyController', {$scope: scope})
    

    如果没有显示声明,$injector などの依存クエリと読み込みを管理します リーリー 明示的な宣言がない場合、$injector はパラメータ名に基づいて 依存関係を推測します
    現時点では、パラメータの順序は意味がありません。

    つまり、次のように宣言することもできます:🎜 リーリー

    返事
    0
  • 滿天的星座

    滿天的星座2017-05-15 16:52:49

    まあ、これは単に関数宣言が書かれているだけで、仮パラメータの名前が重要かどうかは完全に読み手によって決まります。ECMAScript 標準パーサーはそれが重要であるとは考えていません (おそらく) が、Angular は js を採用しました。そして「js」パーサーを書きました。 。 。このように、関数パラメータの名前は重要です

    返事
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-15 16:52:49

    範囲

    AngularJS の $scope オブジェクトはドメイン モデルを変換するためにここにあります
    ビュー (テンプレート) に公開されます。プロパティをスコープ インスタンスに設定するだけで、テンプレートがレンダリングされるときに値を取得できます。

    スコープは、特定のビューのデータと特定の関数を拡張することもできます。特定の UI を変換するには、スコープ インスタンスでいくつかの関数を定義するだけです
    ロジックはテンプレートに公開されます。

    たとえば、次のように name 変数のゲッター メソッドを作成できます:

    リーリー

    次に、次のようにテンプレートで使用します:
    <h1>Hello, {{getName()}} !</h1>

    $スコープ
    オブジェクトを使用すると、モデルのどの部分がこのドメイン内にあるのか、またビュー層でどの操作が使用できるのかを非常に正確に制御できます。理論的には、AngularJS スコープは MVVM パターン ViewModel に非常に似ています。

    http://note.sdo.com/u/635412003927148913/n/s6cBN~lcIHwG4M1-Y000LW

    返事
    0
  • キャンセル返事