解決v-if 與 v-for 同時(shí)使用報(bào)錯(cuò)的問題
在進(jìn)行項(xiàng)目開發(fā)的時(shí)候因?yàn)樵谝粋€(gè)標(biāo)簽上同時(shí)使用了v-for和v-if兩個(gè)指令導(dǎo)致的報(bào)錯(cuò)。
報(bào)錯(cuò)代碼如下:
<el-input
type="textarea"
:autosize="{ minRows: 2, maxRows: 8}"
v-for="Oitem in Object.keys(cItem)"
:key="Oitem"
v-if="Oitem !== 'title'"
v-model="cItem[Oitem]">
</el-input>
提示錯(cuò)誤:The 'undefined' variable inside 'v-for' directive should be replaced with a computed property that returns filtered array instead. You should not mix 'v-for' with 'v-if'
原因:v-for 的優(yōu)先級比 v-if 的高,所以每次渲染時(shí)都會(huì)先循環(huán)再進(jìn)條件判斷,而又因?yàn)?v-if 會(huì)根據(jù)條件為 true 或 false來決定渲染與否的,所以如果將 v-if 和 v-for一起使用時(shí)會(huì)特別消耗性能,如果有語法檢查,則會(huì)報(bào)語法的錯(cuò)誤。
1. 將 v-for 放在外層嵌套 template (頁面渲染不生成 DOM節(jié)點(diǎn)) ,然后在內(nèi)部進(jìn)行v-if 判斷
<template v-for="Oitem in Object.keys(cItem)">
<el-input
type="textarea"
:autosize="{ minRows: 2, maxRows: 8}"
:key="Oitem"
v-if="Oitem !== 'title'"
v-model="cItem[Oitem]">
</el-input>
</template>注意點(diǎn):key值寫在包裹的元素中
2. 如果條件出現(xiàn)在循環(huán)內(nèi)部,不得不放在一起,可通過計(jì)算屬性computed 提前過濾掉那些不需要顯示的項(xiàng)
<template>
<div>
<div v-for="(user,index) in activeUsers" :key="user.index" >{{ user.name }}</div>
</div>
</template>
<script>
export default {
name:'A',
data () {
return {
users: [{name: 'aaa',isShow: true}, {name: 'bbb',isShow: false}]
};
},
computed: {//通過計(jì)算屬性過濾掉列表中不需要顯示的項(xiàng)目
activeUsers: function () {
return this.users.filter(function (user) {
return user.isShow;//返回isShow=true的項(xiàng),添加到activeUsers數(shù)組
})
}
}
};
</script>到此這篇關(guān)于v-if 與 v-for 同時(shí)使用會(huì)報(bào)錯(cuò)的文章就介紹到這了,更多相關(guān)v-if 與 v-for 使用報(bào)錯(cuò)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
圖文詳解Element-UI中自定義修改el-table樣式
elementUI提供的組件間距、樣式都比較大,如果直接套用,在頁面顯示可能就會(huì)顯得很大,就比如表格,表頭、行寬如果不修改的話,遇到列較多的時(shí)候,會(huì)顯得整個(gè)頁面就不好看,下面這篇文章主要給大家介紹了關(guān)于Element-UI中自定義修改el-table樣式的相關(guān)資料,需要的朋友可以參考下2022-08-08
如何使用Vue3設(shè)計(jì)實(shí)現(xiàn)一個(gè)Model組件淺析
v-model在Vue里面是一個(gè)語法糖,數(shù)據(jù)的雙向綁定,本質(zhì)上還是通過 自定義標(biāo)簽的attribute傳遞和接受,下面這篇文章主要給大家介紹了關(guān)于如何使用Vue3設(shè)計(jì)實(shí)現(xiàn)一個(gè)Model組件的相關(guān)資料,需要的朋友可以參考下2022-08-08
vue移動(dòng)端UI框架實(shí)現(xiàn)QQ側(cè)邊菜單組件
這篇文章主要介紹了vue移動(dòng)端UI框架實(shí)現(xiàn)仿qq側(cè)邊菜單組件,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-03-03
vue props 單項(xiàng)數(shù)據(jù)流實(shí)例分享
在本篇文章里小編給大家分享的是一篇關(guān)于vue props 單項(xiàng)數(shù)據(jù)流實(shí)例分享內(nèi)容,需要的朋友們可以參考下。2020-02-02
vue-resource調(diào)用promise取數(shù)據(jù)方式詳解
這篇文章主要介紹了vue-resource調(diào)用promise取數(shù)據(jù)方式詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07
vue 倒計(jì)時(shí)結(jié)束跳轉(zhuǎn)頁面實(shí)現(xiàn)代碼
在商場大家經(jīng)??吹酵\囀召M(fèi)倒計(jì)時(shí)支付頁面,今天小編通過本文給大家分享vue 倒計(jì)時(shí)結(jié)束跳轉(zhuǎn)頁面功能,感興趣的朋友一起看看吧2023-10-10

