###### tags: `vue`, `front-end`, `javascript`
# 【自學筆記】從0開始學Vue - Day4 列表渲染v-for
關於Vue,一直以來都多少有接觸,但都沒有好好的理解過它
就來做個一系列的學習筆記,紀錄學習Vue的過程吧
基本上就以到處拜讀前輩大神的文章,並整理成我理解的文字的方式進行
---
**`v-for`類似`forEach`的功能,主要用於渲染元素或是模板內容。**
`v-for`指令需要使用`item in items`形式來做撰寫
而`v-for`會因為後方`items`接的是 **物件** 還是 **陣列** 而==傳入不同對應內容==
:::info
陣列渲染
:::
v-for設定在元素上依照其陣列重復渲染相同的模板,以下例子:
```htmlembedded=
<div id="app">
<div v-for="item in item_array">{{item}}</div>
</div>
```
```javascript=
var vm = new Vue({
el: "#app",
data: {
item_array: ['one', 'two', 'three']
}
});
```
`v-for` 的語法 `item in items_array`,中間以 `in` 分開為:
`item` : 每個元素的資料。
`items_array` : 原本的陣列資料。
item會綁定陣列中單一元素的資料,one、two、three
**陣列的元素也可以是物件**
```htmlembedded=
<div id="app">
<div v-for="item in objItems">
Eng: {{item.name}}, Number: {{item.number}}
</div>
</div>
```
```javascript=
var vm = new Vue({
el: "#app",
data: {
objItems: [
{name: 'one', number: 1},
{name: 'two', number: 2},
{name: 'three', number: 3}
]
}
});
```
**index參數**
除了基本的`item in items` 語法,還可以用`(item, index) in items` ,使用index參數就可以知道目前的元素是第幾個資料。
```htmlembedded=
<div id="app">
<div v-for="(item, index) in objItems">
index is {{index}} --> {{item}}
</div>
</div>
```
```javascript=
var vm = new Vue({
el: "#app",
data: {
objItems: [
{name: 'one', number: 1},
{name: 'two', number: 2},
{name: 'three', number: 3}
]
}
});
```
:::info
物件渲染
:::
v-for對物件使用,語法跟陣列相同,但其出來的資料是屬性值,如下例:
```htmlembedded=
<div id="app">
<div v-for="value in obj">
{{value}}
</div>
</div>
```
```javascript=
var vm = new Vue({
el: "#app",
data:{
obj: {
data1: 'one',
data2: 'two',
data3: 'three'
}
}
});
```
**其他參數**
除了基本的`value in obj`語法,跟陣列一樣可以加上其他參數使用
* `(value, key) in obj` : 第二個參數為屬性的建值。
* `(value, key, index) in obj` : 第三個參數為巡覽的 index 。
>物件的巡覽是使用`Object.keys()`,並不保證順序會跟原本的相同,例如
>`Object.keys({2: 'two', 0: 'zero', 1: 'one' })`
>出來的結果會是
>`[ "0", "1", "2" ]`
>因此 v-for 不能保證其順序。
:::info
使用範圍做列表渲染
:::
陣列及物件的渲染方式,它還有一種用範圍來渲染的方式,例如
```htmlembedded=
<div id="app">
<div v-for="n in 10">
{{n}}
</div>
</div>
```
---
*參考資料: https://reurl.cc/ErW5NK*
*參考資料: https://reurl.cc/j1p0ey*
*新手工程師的筆記,純粹記錄學了些啥東西
如果有前輩高人讀了我的文,文中有任何錯誤再麻煩指教指教*