其實這個問題以前已經遇到過了,可是仍是在這裏踩坑了。趁此機會整理一下,避免再犯。vue
預期效果:彈出dialog對話框,對話框的內容是由ztree實現的樹菜單。
實際效果:彈出dialog對話框,對話框內容空白,樹菜單顯示失敗。node
<template> <el-dialog title="樹菜單" :visible.sync="dialogVisible"> <div id="tree-menu" class="ztree"></div> </el-dialog> </template> <script> export default { data() { return { dialogVisible: false } }, mounted() { let setting = {view: {showIcon: false}}; let zNodes = [ {id: "1", name: "nodes1"}, {id: "2", name: "nodes2"} ]; $.fn.zTree.init($("#tree-menu"), setting, zNodes); } } </script>
使用elementUI 1.4版本的時候就遇到過這個問題了,當時一直覺得是本身編碼的錯誤,花了不少時間排查。後來控制檯調試的時候發現,沒有打開dialog以前是介個樣子的:ui
第一次打開dialog以後:編碼
基本就能明白,dialog的內容是懶渲染模式。在el-dialog__body
未渲染以前是沒法獲取到其中的DOM元素進行操做的。spa
在elementui最新版本的文檔中也有提示出來了:調試
Vue.$nextTick
將DOM操做延遲到DOM更新以後執行。