解決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)先級(jí)比 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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue中實(shí)現(xiàn)div可編輯并插入指定元素與樣式
這篇文章主要給大家介紹了關(guān)于vue中實(shí)現(xiàn)div可編輯并插入指定元素與樣式的相關(guān)資料,文中通過代碼以及圖文將實(shí)現(xiàn)的方法介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09Vue2響應(yīng)式系統(tǒng)之set和delete
這篇文章主要介紹了Vue2響應(yīng)式系統(tǒng)之set和delete,通過為對(duì)象收集依賴,將對(duì)象、數(shù)組的修改、刪除也變成響應(yīng)式的了,同時(shí)為用戶提供了和方法,下文詳細(xì)介紹需要的朋友可以參考一下2022-04-04vue實(shí)現(xiàn)的微信機(jī)器人聊天功能案例【附源碼下載】
這篇文章主要介紹了vue實(shí)現(xiàn)的微信機(jī)器人聊天功能,結(jié)合實(shí)例形式分析了基于vue.js的微信機(jī)器人聊天相關(guān)界面布局、ajax交互等操作技巧,并附帶源碼供讀者下載參考,需要的朋友可以參考下2019-02-02解決vue-router 切換tab標(biāo)簽關(guān)閉時(shí)緩存問題
這篇文章主要介紹了解決vue-router 切換tab標(biāo)簽關(guān)閉時(shí)緩存問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07vue中的Object.freeze()?優(yōu)化數(shù)據(jù)方式
這篇文章主要介紹了vue中的Object.freeze()優(yōu)化數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04