1. ホーム
  2. angularjs

[解決済み] AngularJS - 子スコープへのアクセス

2022-09-27 06:40:35

質問

以下のようなコントローラがある場合。

function parent($scope, service) {
    $scope.a = 'foo';

    $scope.save = function() {
        service.save({
            a:  $scope.a,
            b:  $scope.b
        });
    }
}

function child($scope) {
    $scope.b = 'bar';
}

の適切な方法は何ですか? parent 読む b から child ? を定義する必要がある場合 bparent と仮定すると、意味的におかしくなりませんか? b に関連する何かを記述するプロパティである child に関連し、かつ parent ?

更新しました。 さらに考えてみると、もし複数の子供が b の競合が発生します。 parent その上で b を取得することができます。私の疑問は残りますが、どのようにすれば b から parent ?

どのように解決するのですか?

AngularJSのスコープはプロトタイプ継承を使用しており、子スコープでプロパティを検索する場合、インタプリタは子から始まるプロトタイプチェーンを検索し、プロパティが見つかるまで親を続けますが、その逆はありません。

この問題についての Vojta のコメントを確認します。 https://groups.google.com/d/msg/angular/LDNz_TQQiNE/ygYrSvdI0A0J

一言で言えば 親スコープから子スコープにアクセスすることはできません。

あなたの解決策

  1. 親でプロパティを定義し、子からそれにアクセスする (上のリンクを読んでください)
  2. 状態を共有するためにサービスを使用する
  3. イベントを通じてデータを渡す $emit はルートスコープまでイベントを親に上向きに送信し $broadcast は下位にイベントを送ります。これは、意味的に正しいことを維持するのに役立つかもしれません。