Vue v-for的使用

1、數(shù)組的使用

<div id="app">

? ? <ul>

? ? ? ? <!--todos數(shù)據(jù)源-->

? ? ? ? <!--item 數(shù)組元素的別名 (數(shù)據(jù)源中數(shù)據(jù))-->

? ? ? ? <li v-for="item in todos">

? ? ? ? ? ? {{item}}

? ? ? ? </li>

? ? </ul>

? ? <ul>

? ? ? ? <li v-for="(item,index) in todos">

? ? ? ? ? ? {{item}}----{{index}}----{{message}}

? ? ? ? </li>

? ? </ul>

? ? {{getTodos()}}

</div>

<script>

? ? var app = new Vue({

? ? ? ? el: '#app',

? ? ? ? data: {

? ? ? ? ? ? message: '1111',

? ? ? ? ? ? todos: [

? ? ? ? ? ? ? ? {text: '學(xué)習(xí)JavaScript'},

? ? ? ? ? ? ? ? {text: '學(xué)習(xí)css'},

? ? ? ? ? ? ? ? {text: '學(xué)習(xí)Vue'},

? ? ? ? ? ? ? ? {text: '做個(gè)項(xiàng)目'}

? ? ? ? ? ? ]

? ? ? ? },

? ? ? ? methods: {

? ? ? ? ? ? getTodos() {

? ? ? ? ? ? ? ? /**

? ? ? ? ? ? ? ? * 第一個(gè)參數(shù) item 數(shù)組元素的別名 (數(shù)據(jù)源中數(shù)據(jù))

? ? ? ? ? ? ? ? * 第二個(gè)參數(shù) index 下標(biāo) 索引

? ? ? ? ? ? ? ? * 第三個(gè)參數(shù) data? 數(shù)據(jù)源

? ? ? ? ? ? ? ? */

? ? ? ? ? ? ? ? this.todos.forEach((item, index, data) => {

? ? ? ? ? ? ? ? ? ? console.log(index, item, data)

? ? ? ? ? ? ? ? })

? ? ? ? ? ? }

? ? ? ? }

? ? })

</script>

2、對(duì)象的使用

<body>

<script src="../libs/vue.js"></script>

<div id="app">

? ? <p v-for="value in object">

? ? ? ? {{value}}

? ? </p>

? ? <p v-for="(value, key) in object">

? ? ? ? {{value}}----{{key}}

? ? </p>

? ? <p v-for="(value, key, index) in object">

? ? ? ? {{key}}---{{value}}----{{index}}

? ? </p>

? ? <!--v-model 雙向綁定-->

? ? <input type="text" placeholder="請(qǐng)輸入key" v-model="key"/>

? ? <input type="text" placeholder="請(qǐng)輸入value" v-model="value"/>

? ? <button @click="add">添加字段</button>

</div>

<script>

? ? var app = new Vue({

? ? ? ? el: '#app',

? ? ? ? data: {

? ? ? ? ? ? key: '',

? ? ? ? ? ? value: '',

? ? ? ? ? ? object: {

? ? ? ? ? ? ? ? title: "叫標(biāo)題",

? ? ? ? ? ? ? ? author: '叫作者',

? ? ? ? ? ? ? ? pushlished: '2021-11-11'

? ? ? ? ? ? }

? ? ? ? },

? ? ? ? methods: {

? ? ? ? ? ? add() {

? ? ? ? ? ? ? ? //往對(duì)象里添加字段

? ? ? ? ? ? ? ? /**(第一種)

? ? ? ? ? ? ? ? * 第一個(gè)參數(shù):添加的對(duì)象

? ? ? ? ? ? ? ? * 第二個(gè)參數(shù):key

? ? ? ? ? ? ? ? * 第三個(gè)參數(shù):value

? ? ? ? ? ? ? ? */

? ? ? ? ? ? ? ? // Vue.set(this.object, 'tel', '177****1661')

? ? ? ? ? ? ? ? /**(第二種)

? ? ? ? ? ? ? ? * 第一個(gè)參數(shù):添加的對(duì)象

? ? ? ? ? ? ? ? * 第二個(gè)參數(shù):key

? ? ? ? ? ? ? ? * 第三個(gè)參數(shù):value

? ? ? ? ? ? ? ? */

? ? ? ? ? ? ? ? this.$set(this.object, this.key, this.value)

? ? ? ? ? ? }

? ? ? ? }

? ? })

</script>

</body>

3、循環(huán)數(shù)字

<body>

<script src="../libs/vue.js"></script>

<div id="app">

? ? <!--number 從1-->

? ? <div v-for="number in 5">

? ? ? ? {{number}}

? ? </div>

? ? <div v-for="(number,index) in 5">

? ? ? ? {{number}}---{{index}}

? ? </div>

</div>

<script>

? ? var app = new Vue({

? ? ? ? el: '#app',

? ? ? ? data: {

? ? ? ? },

? ? })

</script>

</body>

注意:

當(dāng)Vue 正在更新使用?v-for渲染的元素列表時(shí),它默認(rèn)使用“就地更新”的策略。如果數(shù)據(jù)項(xiàng)的順序被改變,Vue 將不會(huì)移動(dòng) DOM 元素來匹配數(shù)據(jù)項(xiàng)的順序,而是就地更新每個(gè)元素,并且確保它們?cè)诿總€(gè)索引位置正確渲染。

為了給Vue 一個(gè)提示,以便它能跟蹤每個(gè)節(jié)點(diǎn)的身份,從而重用和重新排序現(xiàn)有元素,你需要為每項(xiàng)提供一個(gè)唯一?key attribute。

例:

<div v-for="item in items"?v-bind:key="item.id">?

因?yàn)樗荲ue 識(shí)別節(jié)點(diǎn)的一個(gè)通用機(jī)制,key?并不僅與?v-for?特別關(guān)聯(lián)。

注:

不要使用對(duì)象或數(shù)組之類的非基本類型值作為?v-for?的?key。請(qǐng)用字符串或數(shù)值類型的值。

不推薦同時(shí)使用?v-if?和?v-for。

當(dāng)?v-if?與?v-for?一起使用時(shí),v-for?具有比?v-if?更高的優(yōu)先級(jí)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容