其实这个问题以前已经遇到过了,可是仍是在这里踩坑了。趁此机会整理一下,避免再犯。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更新以后执行。