1

ng-include 内の html からコントローラ ExampleCtrl の $scope.myProperty の値を設定できないのはなぜですか。しかし、$scope.myObj.myProperty を定義し、html で参照すると、正常に動作するようになりng-model="myObj.myProp"ますか?

例:

<div ng-app="MyApp">
    <div ng-controller='ExampleCtrl'>
        <div ng-include="'#inlcude'"></div>
        <!-- THIS DON'T WORK -->
        <p><b>myProperty:</b>{{myProperty}}</p>
        <!-- THIS WORK -->
        <p><b>myObj.myProperty:</b>{{myObj.myProperty}}</p>
    </div>
</div>    
<!-- INCLUDE HTML -->
<div id='include'>
    <input ng-model='myProperty' type='text' />
    <input ng-model='myObj.myProperty' type='text' />
</div>

ng-include が新しいスコープを作成することは理解していますが、インクルードの html から親スコープの単純なプロパティが表示されないのはなぜですか?

ありがとう

4

1 に答える 1

1

入力がそれに書き込むとmyProperty、(その時点で) 子スコープにプロパティが作成されます。この子スコープ プロパティは、同じ名前の親プロパティを隠します。子が行うすべての変更は、子スコープ プロパティで行われます。親スコープは、この新しい子スコープ プロパティを認識できません。この別のプロパティが存在することを知りません。{{myProperty}}が補間されると、独自のプロパティが見つかります。

他の入力が に書き込むときはmyObj.myProperty、プロトタイプ チェーンに従い、親スコープのプロパティに書き込みます。

より詳細な回答 (多くの写真付き) については、AngularJS におけるスコープ プロトタイプ/プロトタイプ継承のニュアンスは何ですか? を参照してください。

于 2013-03-06T20:19:57.133 に答える