<!doctype html> <html ng-app="firstApp"> <head> <meta charset="utf-8"> <script src="angular-1.3.0.js"></script> </head> <body> <div ng-controller="parentCtrl"> <input ng-model="args"> <div ng-controller="childCtrl"> <input ng-model="args"> </div> </div> <script> var app=angular.module('firstApp',[]); app.controller('parentCtrl',function($scope) { $scope.args = '123'; }).controller('childCtrl', function($scope) { }); </script>
ケースの説明:
childCtrl には特定の args 属性が定義されていませんが、childCtrl のスコープはparentCtrl のスコープを継承するため、
したがって、childCtrl はプロトタイプを通じて親スコープの args プロパティにリンクされ、入力に設定されます。そして、親入力の入力値は自動的に子入力に同期されます
しかし、その逆は当てはまりません。つまり、子を変更しても親の値を変更することはできず、親が変更された後は子も同期しなくなります。その理由は、子スコープにコンテンツを入力するとき、
です。
HTML コード内のモデルは childCtrl のスコープに明示的にバインドされているため、AngularJS は childCtrl の args プリミティブ型属性を生成します。
AngularJS のスコープ継承プロトタイプ メカニズムに従って、childCtrl は独自のスコープ内で args 属性値を検索するため、親から args 値を検索しません。
その結果、子スコープにも親スコープにも引数があり、子と親の間の値は同期されなくなります。
以上がこの記事の全内容です。皆さんに気に入っていただければ幸いです。