2015-05-12 48 views
0

我正在學習一本書的角度,但我已經達到了一個似乎沒有工作的例子。我有這樣的:角度跟蹤的hashKey不打印

<div ng-repeat="note in ctrl.notes track by note.id"> 
    {{note.$$hashKey}} 
    <span class="label"> {{note.label}}</span> 
    <span class="author" ng-bind="note.done"></span> 
</div> 

,並在控制器:

 this.notes = [ 
      { 
       id: 1, 
       label: 'Changed Note', 
       done: false, 
       someRandom: 4242 
      }, 
      { 
       id: 2, 
       label: 'Second Note', 
       done: false 
      }, 
      { 
       id: 3, 
       label: 'Finished Third Note', 
       done: true 
      } 
     ]; 

的問題是,沒有按部就班地進行,note.id從3打印,但同時通過note.id添加曲目,它應該以ID打印...但它不打印任何東西,它是空白的並且控制檯中沒有錯誤。這是正常行爲還是我做錯了什麼?

筆:http://codepen.io/vandervals/pen/EjPeML

回答

0

這是正常的。 $$hashkey是角度記憶哪個對象與哪個html元素相關的方式。

使用「track by note.id」告訴角度「在這裏,用這個代替我提供一個notes的集合,並且每個note都有一個id屬性,它將是唯一的。當您使用跟蹤表達式時,角度不需要$$hashkey,因此它不會生成一個。你的書可能是錯版或已過時。

+0

我知道它用note.id替換原來的計數器,但爲什麼它不打印id?那麼這條曲目有什麼用途呢? – Vandervals

+0

它不打印id,因爲你的html正在尋找$$ hashkey。如果你想打印出id然後使用:{{note.id}} – HankScorpio

+0

但是如果想打印id,我可以從開頭寫{{note.id}}而不使用$$ hashkey,那麼爲什麼那裏的「軌道」? – Vandervals