element el-tree树结构刷新后保留展开状态解决方法

element el-tree树结构刷新后保留展开状态解决方法 我们在使用element的el-tree组件的时候,当我们给树结构重新赋值后,树节点就全部自动合上了。所以我们要记录展开状态,方法如下 html代码如下: el-tree ref="tree" :data="treeList" :highlight-current="true" :
 element el-tree树结构刷新后保留展开状态解决方法
我们在使用element的el-tree组件的时候,当我们给树结构重新赋值后,树节点就全部自动合上了。所以我们要记录展开状态,方法如下
html代码如下:
<el-tree
  ref="tree"
  :data="treeList"
  :highlight-current="true"
  :default-expanded-keys="defaultExpandIds" //这个属性就是记录展开状态的
  :filter-node-method="filterNode"
  node-key="id" //这个属性不能漏掉
  :indent="30"
  :accordion="true"
  class="filter-tree"
  :props="defaultProps"
  @node-click="clickTreeItem"
  @node-expand="handleNodeExpand" // 展开节点时触发的函数
  @node-collapse="handleNodeCollapse" // 关闭节点时触发的函数
>
</el-tree>
定义变量
data () {
 return {
  treeList: [], // 我的树结构数据
  defaultExpandIds: [] // 这里存放要默认展开的节点 id
 }
}
method函数:
// 树节点展开
handleNodeExpand(data) {
  // 保存当前展开的节点
  let flag = false
  this.defaultExpandIds.some(item => {
    if (item === data.id) { // 判断当前节点是否存在, 存在不做处理
      flag = true
      return true
    }
  })
  if (!flag) { // 不存在则存到数组里
    this.defaultExpandIds.push(data.id)
  }
},
// 树节点关闭
handleNodeCollapse(data) {
  // 删除当前关闭的节点
  this.defaultExpandIds.some((item, i) => {
    if (item === data.id) {
      this.defaultExpandIds.splice(i, 1)
    }
  })
  this.removeChildrenIds(data) // 这里主要针对多级树状结构,当关闭父节点时,递归删除父节点下的所有子节点
},
// 删除树子节点
removeChildrenIds(data) {
  const ts = this
  if (data.children) {
    data.children.forEach(function(item) {
      const index = ts.defaultExpandIds.indexOf(item.id)
      if (index > 0) {
        ts.defaultExpandIds.splice(index, 1)
      }
      ts.removeChildrenIds(item)
    })
  }
},
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

一、下拉选择 改动三个地方:下拉选择模板、数据渲染、下拉选择监听填充数据 //表格{ title: '是否棚改房span class="titletips"*/span', field: 'sfpgf', align: 'center', width: 110, // edit: 'text', templet: function (d) { return 'select name="sfpgf" class="sel_xlk" lay-filter="sfpgf" l
layui表格:设置表头居中,内容居左的实例代码:表头在属性中控制,内容直接用css样式控制 { field: 'Result', title: '结果', align: 'center', width: '60%', templet: function (d) { return 'div style="text-align:left"' + d.Result + '/div' }},
layui的tab选项卡、刷新保持在当前页面的实例代码: // 刷新 $('.layui-tab-title li').click(function(){ var picTabNum = $(this).index(); sessionStorage.setItem("picTabNum", picTabNum); }) // //刷新保持在当前页面 $(function () { var getPicTabNum = sessionStorage.getItem("picTabNum"); // con
JS获取当前时间(年月日时分秒)的实例代码,详细代码如下: p id="time"/pscriptvar time = document.getElementById("time") function show() {let date = new Date();let year = date.getFullYear(); //获取当前年份let mon = date.getMonth() + 1; //获取当前月份let da = date.getDate(); //获取当
ONLY Visible Div form elements will get submitted(将只提交可见的Div表单元素)
insert tags in ElementTree text(在ElementTree文本中插入标签)