当前位置: 首页 > news >正文

筑建网站首页近期新闻热点

筑建网站首页,近期新闻热点,赣州找工作的网站,容桂营销网站建设文章目录 导文代码实现1. 基本结构2. 懒加载实现3. 默认勾选功能4. 动态加载初始节点5. 节点勾选事件监听完整代码 导文 在实际开发中,很多数据过于庞大,需要分批请求,使用到懒加载。但是在tree的方法中,使用懒加载后无法直接使用…

在这里插入图片描述

文章目录

  • 导文
  • 代码实现
    • 1. 基本结构
    • 2. 懒加载实现
    • 3. 默认勾选功能
    • 4. 动态加载初始节点
    • 5. 节点勾选事件监听
    • 完整代码


导文

在实际开发中,很多数据过于庞大,需要分批请求,使用到懒加载。但是在tree的方法中,使用懒加载后无法直接使用default-checked-keys默认勾选。想要这个效果该如何实现?
效果展示:
在这里插入图片描述

代码实现

在 Vue 项目中使用 Element UI 的 el-tree 组件时,树形数据的懒加载和默认勾选功能是常见的需求。以下是如何实现这两种功能的详细步骤:

1. 基本结构

el-tree 是 Element UI 提供的树形组件,支持懒加载、节点勾选等功能。以下是组件的基本结构:

<el-drawer v-if="drawerVisible" v-model="drawerVisible" title="角色权限" size="50%"><el-treeref="tree":props="treeProps":load="loadNode"lazyshow-checkboxnode-key="id":default-checked-keys="defaultCheckedKeys"@check="onCheckChange"/>
</el-drawer>

关键属性说明:

  • lazy:启用懒加载模式。
  • load:懒加载数据的方法。
  • show-checkbox:显示节点复选框。
  • node-key:节点的唯一标识字段。
  • default-checked-keys:默认勾选的节点 ID 数组。
  • @check:节点勾选状态变化时触发的事件。

2. 懒加载实现

懒加载的核心是通过 load 方法动态加载节点数据。以下是一个示例:

methods: {loadNode(node, resolve) {if (node.level === 0) {// 加载根节点resolve([..//数据列表]);} else if (node.level === 1) {resolve([..//数据列表]);} else {// 其他层级返回空数组resolve([]);}}
}

实现逻辑:

  • 根节点加载:当 node.level === 0 时,返回根节点数据。
  • 子节点加载:根据父节点的 id 返回对应的子节点数据。
  • 叶子节点标记:通过 leaf: true 标记节点为叶子节点,避免进一步加载。

3. 默认勾选功能

通过 default-checked-keys 属性,可以设置默认勾选的节点。该属性接收一个数组,数组中的值为需要勾选的节点 ID。

data() {return {defaultCheckedKeys: ['role', 'user-list'] // 默认勾选的节点 ID};
}

在树加载完成后,el-tree 会自动勾选 defaultCheckedKeys 中指定的节点。

4. 动态加载初始节点

某些场景下需要在树加载完成后自动展开某些节点。可以通过 ref 获取树实例,并调用 expand 方法实现:

methods: {openDrawer() {this.drawerVisible = true;//第一种实现方法this.$nextTick(() => {this.loadInitialNodes();});//第二种实现方法setTimeout(() => {this.loadInitialNodes()}, 500)},loadInitialNodes() {if (this.$refs.tree) {// 展开根节点的所有子节点this.$refs.tree.root.childNodes.forEach(node => {node.expand();});}}
}

实现逻辑:

  • openDrawer 方法中,打开抽屉并等待 DOM 更新完成后调用 loadInitialNodes
  • loadInitialNodes 中,通过 this.$refs.tree 获取树实例,并遍历根节点的子节点,调用 expand 方法展开节点。

5. 节点勾选事件监听

通过 @check 事件可以监听节点勾选状态的变化。事件回调函数会返回当前勾选的节点数据和节点对象。

methods: {onCheckChange(checkedData, checkedStatus) {console.log('当前勾选的节点数据:', checkedData);console.log('当前勾选状态:', checkedStatus);}
}

参数说明:

  • checkedData:当前勾选的节点数据。
  • checkedStatus:包含勾选状态信息的对象,如 checkedKeys(勾选的节点 ID 数组)、halfCheckedKeys(半勾选的节点 ID 数组)等。

完整代码

以下是完整的代码实现:

<template><el-drawer v-if="drawerVisible" v-model="drawerVisible" title="角色权限" size="50%"><el-treeref="tree":props="treeProps":load="loadNode"lazyshow-checkboxnode-key="id":default-checked-keys="defaultCheckedKeys"@check="onCheckChange"/></el-drawer>
</template><script>
export default {data() {return {drawerVisible: false,treeProps: {label: 'name',children: 'children',isLeaf: 'leaf'},defaultCheckedKeys: ['role', 'user-list']};},methods: {openDrawer() {this.drawerVisible = true;//第一种实现方法this.$nextTick(() => {this.loadInitialNodes();});//第二种实现方法setTimeout(() => {this.loadInitialNodes()}, 500)},loadNode(node, resolve) {if (node.level === 0) {// 加载根节点resolve([..//数据列表]);} else if (node.level === 1) {resolve([..//数据列表]);} else {// 其他层级返回空数组resolve([]);}},loadInitialNodes() {if (this.$refs.tree) {this.$refs.tree.root.childNodes.forEach(node => {node.expand();});}},onCheckChange(checkedData, checkedStatus) {console.log('当前勾选的节点数据:', checkedData);console.log('当前勾选状态:', checkedStatus);}}
};
</script>

通过结合 lazyloaddefault-checked-keys 等属性,el-tree 提供了强大的功能,能够实现树形数据的懒加载、节点默认勾选和动态展开等需求。根据实际场景,可以灵活使用这些功能来满足需求。

您好,我是肥晨。
欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。

http://www.rdtb.cn/news/16090.html

相关文章:

  • c web网站开发弹窗seo实战培训中心
  • 个人网站要在公安备案吗安徽做网站公司哪家好
  • 前端做兼职网站专业的seo搜索引擎优化培训
  • 免费ps软件网站厦门seo新站策划
  • 整站seo运营永久8x的最新域名
  • 徐州个人建站模板内容营销的4个主要方式
  • 山西网站制作设计站长工具域名
  • 哪种类型的网站比较难做全自动推广引流软件
  • 如何学习网站制作今日小说搜索风云榜
  • 免费发布信息网站大全注册茂名网站建设制作
  • 全国建设系统政治研究会网站网站优化关键词排名
  • 开网站做销售西安seo代理计费
  • 做网站怎么引流自己如何做网站
  • 网站推广怎么做的郑州seo关键词
  • 网站开发网站维护这行业怎么样代理推广月入5万
  • 广告策划书的内容google seo教程
  • wordpress屏蔽右键seo培训优化
  • 从事网站建设新品牌推广策划方案
  • 用建站ABC做的网站 怎么营销百度官网网站登录
  • 安徽省建设工程信息网官方网站天天外链官网
  • 做demo的网站推广普通话手抄报
  • wordpress 3.5.1 漏洞windows优化大师是病毒吗
  • 搭一个网站常用的网络营销方法有哪些
  • 微网站建设方式电商平台排行榜前十名
  • wordpress flash加载青岛网站快速排名优化
  • 怎么做公司网站的二维码各大引擎搜索入口
  • 做二手物资哪个网站好桂林网站设计制作
  • 18款禁用黄在线观看免费杭州seo哪家好
  • 做外贸网站需要注意些什么手续长春网站建设技术支持
  • 如何在网站做qq群链接十大经典事件营销案例