vue+element树形选择器组件封装和使用方式

 更新时间:2020年04月23日 09:59:42   作者:WalkerShen  
这篇文章主要介绍了vue+element树形选择器组件封装和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

vue+element树形选择器组件封装和使用

演示效果

image.png

image.png

子组件

<template>
  <div>
    <el-input
      v-model="value"
      @focus="showTree"
      :placeholder="placeholder"
      suffix-icon="el-icon-arrow-down"
      readonly
    />
    <el-tree
      v-if="treeShow"
      :data="data"
      :node-key="nodeKey"
      default-expand-all
      :props="defaultProps"
      accordion
      @node-click="handleNodeClick"
    >
    </el-tree>
  </div>
</template>

<script>
export default {
  data() {
    return {
      treeShow: false,
    };
  },
  props: {
    // input的值
    value: {
      type: String,
    },
    // 提示语
    placeholder: {
      type: String,
      default: "请点击",
    },
    // 树节点数据
    data: {
      type: Array,
    },
    // 节点的key
    nodeKey: {
      type: String,
      default: "id",
    },
    // 树的props
    defaultProps: {
      type: Object,
      default: {
        children: "children",
        label: "name",
      },
    },
    // 方法
    handleData: {
      type: Function,
    },
  },
  methods: {

    // 点击方法
    handleNodeClick(data) {
      this.treeShow = false;
      this.handleData(data);
    },

    // 显示树
    showTree() {
      this.treeShow = !this.treeShow;
    },
  },


  // 监听value数据,解决组件传值没实时更新问题
  watch: {
    value: {
      handler: function (v, ov) {
        this.value = v;
      },
      deep: true,
      immediate: true,
    },
  },
};
</script>

<style lang="scss" scoped></style>

父组件

 <treeSelect
            :value="form.parentName"
            placeholder="点击获取父级区域"
            :data="treeList"
            :defaultProps="defaultProps"
            :handleData="receiveData"
          ></treeSelect>

export default{
//组件引入                          
  components: {
    treeSelect: () => import("../components/treeSelect.vue"),
  },
 //
data(){
    return {
      form: {},
       treeShow: false,
      treeList: [],
      defaultProps: {
        children: "children",
        label: "name",
      },
    }
},
methods:{
  receiveData(data) {
      console.log("接收数据:", data);
    // 需要使用$set设置
      this.$set(this.form, "parentName", data.name);
      this.$set(this.form, "parentId", data.id);
    },

// 获取树的接口
  treeRegion() {
      let params = {};
      treeRegion(params).then((res) => {
        this.treeList = res.data;
      });
    },
}
  }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue中路由验证和相应拦截的使用详解

    vue中路由验证和相应拦截的使用详解

    这篇文章主要为大家详细介绍了vue中路由验证和相应拦截的使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • vue+element树形选择器组件封装和使用方式

    vue+element树形选择器组件封装和使用方式

    这篇文章主要介绍了vue+element树形选择器组件封装和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2020-04-04
  • vue远程加载sfc组件思路详解

    vue远程加载sfc组件思路详解

    这篇文章主要介绍了vue远程加载sfc组件思路详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Vue+elementui 实现复杂表头和动态增加列的二维表格功能

    Vue+elementui 实现复杂表头和动态增加列的二维表格功能

    这篇文章主要介绍了Vue+elementui 实现复杂表头和动态增加列的二维表格功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • vue实现各种文件文档下载及导出示例

    vue实现各种文件文档下载及导出示例

    这篇文章主要介绍了vue实现各种文件文档下载及导出示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • VUE简单的定时器实时刷新的实现方法

    VUE简单的定时器实时刷新的实现方法

    这篇文章主要介绍了VUE简单的定时器实时刷新的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • vue中父组件通过props向子组件传递数据但子组件接收不到解决办法

    vue中父组件通过props向子组件传递数据但子组件接收不到解决办法

    大家都知道可以使用props将父组件的数据传给子组件,下面这篇文章主要给大家介绍了关于vue中父组件通过props向子组件传递数据但子组件接收不到的解决办法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • vue实现日历备忘录功能

    vue实现日历备忘录功能

    这篇文章主要为大家详细介绍了vue实现日历备忘录功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • 如何使用vue3简单实现WebSocket通信

    如何使用vue3简单实现WebSocket通信

    这篇文章主要给大家介绍了关于如何使用vue3简单实现WebSocket通信的相关资料,WebSocket是全双工网络通信通信协议,实现了客户端和服务器的平等对话,任何一方都可以主动发送数据,需要的朋友可以参考下
    2023-08-08
  • Vue的Props实例配置详解

    Vue的Props实例配置详解

    props主要用于组件的传值,他的工作就是为了接收外面传过来的数据,与data、el、ref是一个级别的配置项,下面这篇文章主要给大家介绍了关于Vue组件如何设置Props的相关资料,需要的朋友可以参考下
    2022-11-11

最新评论