2013-03-06 57 views
1

爲什麼我不能從ng-include中的html中設置控制器ExampleCtrl的$ scope.myProperty的值。但是,如果我定義$ scope.myObj.myProperty和在HTML我推薦像ng-model="myObj.myProp"工作正常?AngularJS:ng-include和示波器

例子:

<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-包括創建一個新的範圍,但爲什麼從的HTML包括我沒有看到你的父母範圍的簡單歡迎使用屬性?

感謝

回答

1

當輸入寫入myProperty將(在這一點上)上創建子作用域屬性。此子範圍屬性隱藏/隱藏相同名稱的父屬性。孩子做出的任何更改都將在子範圍屬性上進行。父範圍不能看到這個新的子範圍屬性–它不知道這個其他屬性存在。當插入{{myProperty}}時,它會找到它自己的屬性。

當其他輸入寫入myObj.myProperty時,它會跟隨原型鏈並寫入父範圍的屬性。

對於一個更詳細的答案(有很多圖片),請參閱What are the nuances of scope prototypal/prototypical inheritance in AngularJS?

+1

謝謝!我發現你的[post](http://stackoverflow.com/questions/14049480/what-are-the-nuances-of-scope-prototypal-prototypical-inheritance-in-angularjs) – jlarghi 2013-03-06 20:22:59