最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • vue-cli4.x + elementUI树形控件的使用(根据点击内容显示不同数据 + 带多选框的树形控件)

    正文概述 掘金(只会html的前端)   2021-04-13   803

    vue-cli4.x + elementUI树形控件的使用(根据点击内容显示不同数据 + 带多选框的树形控件)

    点击第一层、第二层、第三层都要显示其对应的数据(包括来回点击父子层节点,多次点击)

    看了很多文章都说获取父级和子级的当前节点啥的,有点麻烦,em…,直接上代码

    <el-tree
                :data="companyList"
                node-key="id"
                :props="defaultProps"
                :default-expanded-keys="[0]"
                :accordion="true"
                ref="tree"
                :highlight-current="true"
                @node-click="handleNodeClick"
                current-node-key="id"//当前选中的节点,一定要加上
                node-expand="expandChange"
                :expand-on-click-node="true"
              >
                <span
                  class="custom-tree-node"
                  style="display: flex; align-items: center"
                  slot-scope="{ node, data }"
                >
                  <span style="font-size: 13px">{{ data.name }}</span>
                  <span>
                    <el-button
                      style="font-weight: bold; margin-left: 6px"
                      type="text"
                      size="mini"
                      @click="() => append(node, data)"
                      >...</el-button
                    >
                  </span>
                </span>
              </el-tree>
    

    渲染出来的样子大致是这样:
    点击对应层级节点显示响应的数据内容

    vue-cli4.x + elementUI树形控件的使用(根据点击内容显示不同数据 + 带多选框的树形控件)

    js代码:

    handleNodeClick(defaultKeys, node, info) {
          let name = defaultKeys.name;
          console.log(defaultKeys)
          console.log(node)
          console.log(info)
          //判断当前点击的是哪一层节点;1、最外层父节点;2、第二次层子节点;3、末层节点内容;4、.....以此类推
          // 并根据点击的内容显示不同的数据
          // 部分变量赋值为空是为了处理来回点击节点数据传值错误而写的
          if(node.level == 1){
            this.companyName = name
            this.gradeName = ''
            this.employeeName = ''
          } else if (node.level == 2){
            this.gradeName = name
            this.employeeName = ''
          } else if (node.level == 3) {
            this.employeeName = name
          }
          console.log(this.companyName)
          console.log(this.gradeName)
          console.log(this.employeeName)
          // 请求接口,获取数据
          this.getEmployeeList(this.currentPage, this.pageSize,'',this.gradeName,this.employeeName,this.companyName);
        },
    

    handleNodeClick:是点击节点触发的方法,接收3个参数(点击该节点对应的对象,节点对应的node,组件本身),分别打印一下看看

    vue-cli4.x + elementUI树形控件的使用(根据点击内容显示不同数据 + 带多选框的树形控件)

    在node当中有一个level字段就是我们需要用到的,代码中有注释,自己看,info打印的太多了,就不展示了,来看一下network的数据传值,通过传不同的值给后台来获取数据就ok了

    vue-cli4.x + elementUI树形控件的使用(根据点击内容显示不同数据 + 带多选框的树形控件)

    带复选框的树形控件

    html部分代码,@check-change是节点选中状态发生变化时的回调

    	<el-tree
                :data="companyList"
                node-key="id"
                :props="defaultProps"
                :default-expanded-keys="[0]"
                :accordion="true"
                ref="tree"
                @check-change="handleCheckChange"
                :highlight-current="true"
                show-checkbox
                @node-click="handleNodeClick"
                current-node-key="id"
                node-expand="expandChange"
                :expand-on-click-node="true"
              >
                <span
                  class="custom-tree-node"
                  style="display: flex; align-items: center"
                  slot-scope="{ node, data }"
                >
                  <span style="font-size: 13px">{{ data.name }}</span>
                </span>
              </el-tree>
    

    点击复选框的js代码
    3个参数分别是:传递给 data 属性的数组中该节点所对应的对象、节点本身是否被选中、节点的子树中是否有被选中的节点

        handleCheckChange(data, checked, indeterminate){
            this.isChecked = checked
            console.log(data)
           	//这里是node-key="xxxxx"绑定的数据,我绑定的是每个员工id
            console.log(this.$refs.tree.getCheckedKeys())
            //过滤最外层id(下方图片2位数字的)
            let employeeIdArr = this.$refs.tree.getCheckedKeys().filter(item => {
              return item.length !== 2
            })
            console.log(employeeIdArr.join(','))
            this.employeeId = employeeIdArr.join(',')
          },
    

    上面的是通过key获取到的数据;下面的是过滤后的数据。这样就能取到点击的对应的数据了,
    然后把他们传给后台

    vue-cli4.x + elementUI树形控件的使用(根据点击内容显示不同数据 + 带多选框的树形控件)


    起源地下载网 » vue-cli4.x + elementUI树形控件的使用(根据点击内容显示不同数据 + 带多选框的树形控件)

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元