4

コードの 2 つのスニペットを次に示します。

<input type="text" ng-model="data.message">
<div>Hello, {{data.message}}</div>

<div ng-controller="firstCtrl">
    <input type="text" ng-model="data.message">
    <div>Hello, {{data.message}}</div>
</div>

<div ng-controller="secondCtrl">
    <input type="text" ng-model="data.message">
    <div>Hello, {{data.message}}</div>
</div>

<input type="text" ng-model="msg">
<div>Hello, {{msg}}</div>

<div ng-controller="firstCtrl">
    <input type="text" ng-model="msg">
    <div>Hello, {{msg}}</div>
</div>

<div ng-controller="secondCtrl">
    <input type="text" ng-model="msg">
    <div>Hello, {{msg}}</div>
</div>

ng-controllerhere は新しいスコープを作成するため、どちらの場合もfirstCtrlsecondCtrlスコープはプロトタイプとしてルート スコープから継承されます。したがって、理想的には、子のプロパティが上書きされるとshadows、親から継承された値であり、親の値は同じままです。では、なぜ 2 つのスニペットの動作が異なるのでしょうか?

また、最初のスニペットで値をfirstCtrl変更すると、ルート スコープの値も変更されるのはなぜですか?

Plnkr: http://plnkr.co/edit/x4LH4JAOMr9I8bCcSO8Y?p=preview

4

1 に答える 1

1

dotコントローラーを同期するために使用されるため、1 つのモデルでプロパティを更新すると、他のコントローラーのプロパティも更新されます。

2 番目のスニペットでは、スコープを上書きしています。

それをうまく説明しているこのビデオを見てください。

于 2013-06-03T07:58:12.243 に答える