0

據我所知,ng-model將創建一個屬性,然後與{{name}}相關。AngularJS如何辨別這兩個屬性?

如何AngularJS是來自ng-model{{name}}和來自ng-repeat/ng-init{{name}}之間辨別?

<section class="section"> 
    <div class="container" data-ng-init="names=['Conner', 'Bryan', 'Cathy', 'Jim']"> 
     <div class="row"> 
      <em>Input your name: </em> <input type="text" data-ng-model="name"> 
      <h4>{{name}}</h4> 
      <ul> 
       <li data-ng-repeat="name in names"> {{name}} </li> 
      </ul> 
     </div> 
    </div> 
</section> 

此外,我可以選擇ng-repeat名稱的任何佔位符文本嗎?

+0

他們在不同的背景下。在ng-repeat之外,'name'是指'data-ng-model =「name」'創建的名稱。在ng-repeat'name'裏面引用names數組中的每個名字,與使用'[] .forEach()'時發生的情況非常相似。而且,是的,你可以用'無論名字'來替換'name in name'。 –

+0

它沒有做任何排序,是的,你可以使用任何東西作爲'name'的變量名稱 –

+0

所以這是一個變量範圍的問題呢? @KevinB – NocturnalCoder

回答

1

子作用域在名稱衝突時覆蓋父作用域。退房範圍在developer guide它說層次

當角計算{{name}},它首先看與該name財產給定元素相關聯的範圍 。如果找不到這樣的 屬性,它將搜索父範圍,依此類推,直到達到根範圍 。

您可以,也可能應該清楚起見,在中繼器中使用不同的變量名稱;

<li data-ng-repeat="firstName in names"> {{firstName}} </li>