vue+element tree(树形控件)组件(2)

今天记录组件的代码和一个调用它的父组件的代码,接口接收数据直接传element直接能用的,也就是经过上一章函数处理过的数据以下是代码

父组件

<template>
    <commonfiltertree :placeholder="placeholder"
        :data="data"
        :showCheckbox="showCheckbox"
        @check=‘getcheckdata‘
        :title="title"
        :showScreen="showScreen"
        @click=‘getCurrentKey‘
        @checkkey=‘getCheckedKeys‘
        :defaultExpandAll="defaultExpandAll"
        :default=‘defaults‘></commonfiltertree>
</template>
<script>
import commonfiltertree from "@/components/newCommon/tree/filtertree.vue";
export default {
    components: {
        commonfiltertree
    },
    data() {
        return {
            placeholder: ‘输入信息,按回车搜索‘,
            showCheckbox: true,
            data: [{
                id: 1,
                label: ‘一级 1‘,
                children: [{
                    id: 4,
                    label: ‘二级 1-1‘,
                    children: [{
                        id: 9,
                        label: ‘三级 1-1-1‘
                    }, {
                        id: 10,
                        label: ‘三级 1-1-2‘
                    }]
                }]
            }, {
                id: 2,
                label: ‘一级 2‘,
                children: [{
                    id: 5,
                    label: ‘二级 2-1‘
                }, {
                    id: 6,
                    label: ‘二级 2-2‘
                }]
            }, {
                id: 3,
                label: ‘一级 3‘,
                children: [{
                    id: 7,
                    label: ‘二级 3-1‘
                }, {
                    id: 8,
                    label: ‘二级 3-2‘
                }]
            }],
            countent: "",
            defaultProps: {
                children: "children",
                label: "label"
            },
            data1: new Array,
            data2: "",
            title: "水费电费水电费",
            showScreen: true,
            defaults: [],
            defaultExpandAll:true

        };
    },
    methods: {
        getcheckdata(data) {
            //有多选框的时候返回的data数组
            this.data1 = data;
        },
        getCurrentKey(data) {
            //点击的时候返回当前点击的key
            this.data2 = data;
        },
        getCheckedKeys(data) {
            //有多选框时返回的key所组成的数组
            this.data3 = data;
        }
    }
};
</script>

子组件

/*
* @property { data :  {Array} 接口传来的数组 }
* @property { showCheckbox :  {Boolean} 是否显示多选小方框 }
* @property { placeholder :  {String} 提示语,上方搜索框提示语。 }
* @property { check : 父组件使用check来接收已选中的所有数据组成的数组 }
* @property { title : {String} 弹窗上方的名字 }
* @property { showScreen : {Boolean} 是否需要筛选框 }
* @property { nodeclick : 节点被点击时的回调 }
* @property { defaults : {Array} 默认选中的数据 传key组成的数组 }
* @property { defaultExpandAll : {Boolean} 是否默认展开 }
* @version 1.0.0
* @edit: 2018/8/2
*/
<template>
    <div class="air-tree-wrappers">
            <div class="el-dialog__title">{{ this.title }}</div>
        <div v-if="screen">
            <el-input class="input"
                :placeholder="placeholder"
                prefix-icon="el-icon-search"
                v-model="filterText"
            >
            </el-input>
        </div>
        <el-tree class="filter-tree"
            :data="data"
            :props="defaultProps"
            :show-checkbox="checkbox"
            :default-expand-all="defaultExpandAll"
            :filter-node-method="filterNode"
            @check-change=‘check()‘
            ref="tree"
            :node-key="‘id‘"
            @node-click="nodeclick">
        </el-tree>
        <div class="foot">
        </div>
    </div>
</template>
<script>
export default {
    props: {
        placeholder: {
            type: String
        },
        data: {
            type: Array
        },
        default: {
            type: Array
        },
        showCheckbox: {
            type: Boolean
        },
        width: {
            type: String
        },
        title: {
            type: String
        },
        showScreen: {
            type: Boolean
        },
        defaultExpandAll: {
            type: Boolean,
        }
    },
    data() {
        return {
            filterText: ‘‘,
            countent: "",
            checkbox: this.showCheckbox,
            defaultProps: {
                children: "children",
                label: "label",
            },
            data1: new Array,
            dialogTableVisible: false,
            screen: this.showScreen
        };
    },
    watch: {
        filterText(val) {
            this.$refs.tree.filter(val);
        }
    },
    methods: {
        filterNode(value, data) {
            if (!value) return true;
            return data.label.indexOf(value) !== -1;
        },
        //传回父组件
        check() {
            //获取所有被选中的data的数组
            let takeDate = this.$refs.tree.getCheckedNodes();
            this.$emit(‘check‘, takeDate);
            //获取所有被选中的key的数组
            let keyDate = this.$refs.tree.getCheckedKeys();
            this.$emit(‘checkkey‘, keyDate);
        },
        nodeclick() {
            let key = this.$refs.tree.getCurrentKey()
            this.$emit(‘click‘, key);
        }
    }
};
</script>

里面用的事件都是element封好的直接用就好了比如

更多的事件,属性直接去element官网找就好了。

this.$nextTick(()=>{}) 这个方法的作用是 DOM更新完成后执行

应该就相当于一个延时函数,很有用,有时你的函数触发的时候dom还没加载出来比如使用$ref时候就会发生这种情况。

原文地址:https://www.cnblogs.com/dongyuxin/p/9436678.html

时间: 2024-10-01 07:22:13

vue+element tree(树形控件)组件(2)的相关文章

vue_elementUI_ tree树形控件 获取选中的父节点ID

el-tree 的 this.$refs.tree.getCheckedKeys() 只可以获取选中的id 无法获取选中的父节点ID想要获取选中父节点的id;需要如下操作1. 找到工程下的node_modules文件夹 然后查找 element-ui.common.js文件 node_modules\element-ui\lib\element-ui.common.js2. 按Ctrl+F搜索TreeStore.prototype.getCheckedKeys这个方法3. 把// if (chi

elementui Tree 树形控件增删改查

数据表结构: 前端代码 axios.js import axios from 'axios'; import Qs from 'qs'; import {Message} from 'element-ui'; axios.defaults.baseURL = "/"; // 设置请求超时时间 axios.defaults.timeout = 30000; // 设置post请求头 axios.defaults.headers.post['Content-Type'] = 'applic

vue Ant Design 树形控件拖动限制

<template> <a-tree class="draggable-tree" draggable @drop="onDrop" @select="handleSelected" @expand="onExpand" :expandedKeys="expandedKeys" :treeData="gData" /> </template> <

elementui Tree 树形控件

数据表结构: 后端代码: @RequestMapping(value = "/list", method = RequestMethod.POST) public Result findCategory(){ List<Category> list = categoryService.findCategory(); if (CollectionUtils.isEmpty(list)){ return ResultUtil.error(404,"资源未找到到&quo

win32 sdk树形控件的项拖拽实现

本课中,我们将学习如何使用树型视图控件.另外还要学习如何在树型视图中完成拖-拉动作,以及如何使用图象列表. 理论: 树型视图是一种特别的窗口,我们可以使用它一目了然地表示某种层次关系.譬如象在资源管理器中左边窗口中的就是树型视图.您可以调用CreateWindowEx来创建树型视图,传递一个类名""SysTreeView32"",或者您也可以把它放到一个对话框中去.不要忘了在您的代码中加入InitCommonControls函数. 树型视图有几种特有的风格.下面是几

Web应用程序开发,基于Ajax技术的JavaScript树形控件

感谢http://www.cnblogs.com/dgrew/p/3181769.html#undefined 在Web应用程序开发领域,基于Ajax技术的JavaScript树形控件已经被广泛使用,它用来在Html页面上展现具有层次结构的数据项. 目前市场上常见的JavaScript框架及组件库中均包含自己的树形控件,例如jQuery.Dojo.YUI.Ext JS等,还有一些独立的树形控件,例如dhtmlxTree等,这些树形控件完美的解决了层次数据的展示问题. 展示离不开数据,树形控件主要

共有21款 jQuery 树形控件开源软件,第1页

JQuery Tree 插件 zTree zTree 是利用 JQuery 的核心代码,实现一套能完成大部分常用功能的 Tree 插件 兼容 IE.FireFox.Chrome 等浏览器 在一个页面内可同时生成多个 Tree 实例 支持 JSON 数据 支持一次性静态生成 和 Ajax 异步加载 两种方式 支持多种事件响应及反馈 支持 Tree...更多zTree信息 最近更新: [每日一博]Ztree+PHP 无限极节点递归查找节点 发布于 1年前 jQuery的Tree控件 jstree j

zTree 树形控件 ajax动态加载数据

很久没搞过树形控件了 , 再次接触看官网文档有点没懂,于是在网上找了个代码copy上,但数据是写死的,就想这在用ajax异步取出数据替换,下面是js代码 <SCRIPT type="text/javascript" > //定义全局ztree数据 var zNodes; /* 初始化ztree数据 */ function initZtree(){ $.ajax({ type: "GET", url: "<%=request.getCont

树形控件简单样例

此实例实现的功能:在一个树形控件中显示鸡啄米站点的简单结构分层,共同拥有三层.分别为鸡啄米站点.各个分类和文章.用鼠标左键单击改变选中节点后.将选中节点的文本显示到编辑框中.以下是详细实现步骤: 1. 创建一个基于对话框的MFCproject,名称设置为"Example31". 2. 在自己主动生成的对话框模板IDD_EXAMPLE31_DIALOG中,删除"TODO: Place dialog controls here."静态文本框."OK"