1、 概述數組
1. exampleapp
若是你須要遍歷一個對象集合,使用Handlebars的{{#each}}。ui
<ul> {{#each people key="id" as |person|}} <li>Hello, {{person.name}}!</li> {{/each}} </ul>
上面的例子將會輸出這樣的結果:spa
<ul> <li>Hello, Yehuda!</li> <li>Hello, Tom!</li> <li>Hello, Trek!</li> </ul>
2. {{#each}}是綁定的。若是你的app添加了一條新數據,或者刪除了一條,不用重寫任何代碼DOM就會被更新。code
注意[].push()不會更新{{each}}。對象
添加多條目須要使用[].pushObject,這關係到Ember可變數組的方法,因此Ember能夠監視這個改變。
blog
2、Specifying Keys(指定鍵)排序
若是數組使用{{each}}遍歷,key選項被用來告訴Ember怎樣判斷在渲染之間已經改變。ci
經過幫助Ember檢測數組中一些相同的元素,DOM元素能夠被重用,這樣大大提升了渲染速度和防止一些意外的結果。string
例如,{{each}}它的key設置爲id: handlebars {{#each people key="id" as |person|}} {{/each}},當這個{{#each}}被從新渲染的時候,Ember將基於每一個項目的id屬性匹配先前被呈現的項目(排序生成的DOM元素)。
這裏有一些特殊的值:
3、 Empty Lists(空集合)
{{#each}}還能夠匹配{{else}}。
example: 若是集合是空的內容將會被渲染。
{{#each people key="id" as |person|}}
Hello, {{person.name}}!
{{else}}
Sorry, nobody is here.
{{/each}}