VUE2.0自定義指令與v-if沖突導(dǎo)致元素屬性修改錯位問題及解決方法
問題:
VUE自定義指令v-permisson 修改了元素是否隱藏,和v-if一起用時,多個按鈕元素同時使用v-permisson和v-if控制展示,后面的v-if=false的按鈕元素被消除,其v-permisson的控制效果修改了上一個v-if=true的按鈕元素。元素屬性修改錯位
猜測原因:
v-if=false DOM元素未創(chuàng)建,v-permisson的el參數(shù)實際修改操作時定位到了錯誤的元素上
解決:
1.合并v-v-if的參數(shù)到v-permisson參數(shù)里
2.v-permisson 支持對象傳參,可以控制元素的屬性 也可以 用el.remove()刪除當(dāng)前元素。
3.利用vue的雙向綁定重新渲染DOM元素,重新刷新元素屬性(未生成的元素,刷新后也可以重新生成),具體寫法元素綁定值附空值 如 this.orderList = [] ,隨后在賦值實際的數(shù)據(jù)。
v-permisson 案例代碼如下:
export default {
bind(el, binding) {
dateDeal(el, binding)
},
update(el, binding) {
dateDeal(el, binding)
},
unbind(el, binding) {
}
}
// 本指令與v-if沖突 刪除的元素賦值會錯改其他元素的屬性***
function dateDeal(el, binding) {
// 數(shù)據(jù)校驗
if (binding.value === null || binding.value === undefined) {
el.remove()
return
}
var permission
var condition
if (binding.value.code !== undefined) {
// 對象入?yún)?
permission = binding.value.code + ‘'
condition = binding.value.condition
}
…
}調(diào)用:666
到此這篇關(guān)于VUE2.0 自定義指令與v-if沖突 導(dǎo)致元素屬性修改錯位解決的文章就介紹到這了,更多相關(guān)vue自定義指令與v-if沖突內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue3集成echarts數(shù)據(jù)刷新后圖表不刷新的解決方法
vue3 集成 echarts 最大的坑就是出現(xiàn)了,reactive 的數(shù)據(jù) 刷新了,但圖表缺不會刷新,所以本文就給大家詳細(xì)的介紹一下vue3集成echarts數(shù)據(jù)刷新后圖表不刷新的解決方法,需要的朋友可以參考下2023-08-08

