## 列表渲染
### 數組渲染
~~~
<ul id="example-1">
<li v-for="item in items">
{{ item.message }}
</li>
</ul>
~~~
~~~
var example1 = new Vue({
el: '#example-1',
data: {
items: [
{ message: 'Foo' },
{ message: 'Bar' }
]
}
})
~~~

在 v-for 塊中,我們擁有對父作用域屬性的完全訪問權限。v-for 還支持一個可選的第二個參數為當前項的索引。
~~~
<ul id="example-2">
<li v-for="(item, index) in items">
{{ parentMessage }} - {{ index }} - {{ item.message }}
</li>
~~~
~~~
var example2 = new Vue({
el: '#example-2',
data: {
parentMessage: 'Parent',
items: [
{ message: 'Foo' },
{ message: 'Bar' }
]
}
})
~~~

你也可以用 of 替代 in 作為分隔符,因為它是最接近 JavaScript 迭代器的語法:
~~~
<div v-for="item of items"></div>
~~~
### 對象渲染
~~~
<ul id="v-for-object" class="demo">
<li v-for="value in object">
{{ value }}
</li>
</ul>
~~~
~~~
new Vue({
el: '#v-for-object',
data: {
object: {
firstName: 'John',
lastName: 'Doe',
age: 30
}
}
})
~~~

你也可以提供第二個的參數為鍵名
~~~
<div v-for="(value, key) in object">
{{ key }}: {{ value }}
</div>
~~~
第三個參數為索引:
~~~
<div v-for="(value, key, index) in object">
{{ index }}. {{ key }}: {{ value }}
</div>
~~~
### key
當 Vue.js 用v-for 正在更新已渲染過的元素列表時,它默認用“就地復用”策略。如果數據項的順序被改變,Vue 將不會移動 DOM 元素來匹配數據項的順序, 而是簡單復用此處每個元素,并且確保它在特定索引下顯示已被渲染過的每個元素。
這個默認的模式是高效的,但是只適用于不依賴子組件狀態或臨時 DOM 狀態 (例如:表單輸入值) 的列表渲染輸出
為了給 Vue 一個提示,以便它能跟蹤每個節點的身份,從而重用和重新排序現有元素,你需要為每項提供一個唯一 key 屬性。理想的 key 值是每項都有的唯一 id。
~~~
<div v-for="item in items" :key="item.id">
<!-- 內容 -->
</div>
~~~
建議盡可能在使用 v-for 時提供 key,除非遍歷輸出的 DOM 內容非常簡單,或者是刻意依賴默認行為以獲取性能上的提升。
因為它是 Vue 識別節點的一個通用機制,key 并不與 v-for 特別關聯,key 還具有其他用途。
### 課后習題
1.將如下數據渲染到頁面上
~~~
let news = [
{title:'新聞1', time: '2012-12-1', author: 'ADMIN'},
{title:'新聞2', time: '2012-12-2', author: 'JACK'},
{title:'新聞3', time: '2012-12-3', author: 'BOB'},
{title:'新聞4', time: '2012-12-4', author: 'ADMIN'},
{title:'新聞5', time: '2012-12-5', author: 'ADMIN'}
]
~~~
排版效果類似于下面的效果,且隔行文字顏色不一樣,奇數行紅色,偶數行綠色
* 新聞1 2012-12-1 ADMIN
* 新聞2 2012-12-2 JACK
* 新聞3 2012-12-3 BOB
* 新聞4 2012-12-4 ADMIN
* 新聞5 2012-12-5 ADMIN
- Less
- 課程規劃
- Less概述
- 變量
- 混合
- 嵌套
- 繼承
- 導入
- 函數
- 其他
- 實戰
- ES6
- 課程規劃
- ES6概述
- let和const命令
- 變量的解構賦值
- 字符串擴展
- 函數擴展
- 數組擴展
- Set和Map數據結構
- Symbol
- Generator 函數
- Promise對象
- Class語法
- Module 的語法
- ES7和ES8
- 實戰
- VUE
- 課程規劃
- vue概述
- vue實例
- 模版語法
- 計算屬性和偵聽器
- Class和Style的綁定
- 條件渲染
- 列表渲染
- 事件處理
- 表單輸入綁定
- 組件基礎
- 過渡和動畫
- 自定義指令
- 過濾器
- 響應式原理
- 實戰課程
- Node
- 課程規劃
- 課程概述
- node入門實例
- 模塊系統
- 回調函數
- 全局對象
- 常用模塊介紹
- 常用模塊介紹-1
- 常用模塊介紹-2
- 常用模塊介紹-3
- npm使用
- express的使用
- express的使用-1
- webpack基礎
- 實戰
- 微信小程序
- 課程規劃
- 課程概述
- 基本配置和生命周期
- wxml模版
- wxss
- wxs
- 組件
- 微信API
- 自定義組件開發
- 實戰小程序
- Element
- 課程規劃
- 課程概述
- 特性介紹
- 組件介紹-基礎組件
- 組件介紹-表單組件
- 組件介紹-數據展示組件
- 組件介紹-提示組件
- 組件介紹-導航組件
- 組件介紹-其他組件
- 綜合案例