Vue+ElementUI項目中條件渲染切換表格時單元格內容顯示異常的問題及解決方法


 當使用 v-ifv-else 條件渲染兩個表格時,v-if 控制的表格內容顯示正常,v-else 控制的表格顯示時部分單元格中的內容不顯示,如下圖所示:

 

 

 檢查了DOM,確實沒有內容,一頓操作之后發現了有趣的現象,將顯示異常內容的單元格的 slot-scope="scope" 取消之后,表格能正常顯示

1 <!-- <template slot-scope="scope"> -->
2 <template>
3   <el-button size="small" type="success" @click="preview(scope.row,0,0)">查看</el-button>
4   <el-button size="small" type="warning" @click="formDialog(0,scope.row)">編輯</el-button>
5   <el-button size="small" type="danger">刪除</el-button>
6 </template>

 

 但是,這樣操作不是正確的解決方法,因為這樣會導致單元格中的操作不能方便地取到當前行的數據(我目前知道的是這樣),所以去查了查,雖然沒有發現一樣的問題,但也找到了一些有啟發性的信息,比如:

 

 接着我試了試,使用 v-show 來控制第二個表格

1 <div v-if="manageWebsite" >
2 
3 </div>
1 <div v-show="!manageWebsite" >
2     
3 </div>

 

結果能行,一切顯示正常了。但是為什么使用 v-ifv-else 會出現問題呢?我又去看了看官方文檔,發現了這樣的描述:

“Vue 會盡可能高效地渲染元素,通常會復用已有元素而不是從頭開始渲染。”

“這樣也不總是符合實際需求,所以 Vue 為你提供了一種方式來表達“這兩個元素是完全獨立的,不要復用它們”。只需添加一個具有唯一值的 key 屬性即可。”

然后,我好像明白了(其實不是很明白),知道了解決方法,就是給兩個不同的表格異常的列或表格本身或其父元素添加不同的 key 屬性值。

 

另外,我還注意到:

“一般來說,v-if 有更高的切換開銷,而 v-show 有更高的初始渲染開銷。因此,如果需要非常頻繁地切換,則使用 v-show 較好;如果在運行時條件很少改變,則使用 v-if 較好。”

如此看來,感覺我這里應該還是用 v-show 更合適一些,但是我這頁面簡單,兩者會有很大的差別嗎?以后再細細研究吧!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM