Vue 自定义下拉框组件

2019-04-11  本文已影响0人  徐向博

最近接手了一个新项目,设计狮要求严格按照设计稿来,so,只能放弃UI框架,自己写组件了,略苦逼。

平时用的最多的是Element-ui,组件都是很成熟的,拿来即用,很多内在的东西都不用去关心。直到需要自己去写的时候这些问题才会暴露出来,发现对于vue的基础知识欠缺很多,所以边写边学习吧。

写select组件的时候,发现有些东西还是挺 “可爱” 的,写下来分享一下,也算做一个笔记吧!不怎么擅长写作,所以直接贴代码吧 :)

首先是模板部分:

<template>
    <div class="imSelector" @mouseleave="mouseleave">
        <p class="imSelectorTitle" @click="selectorToggle">
            {{value ? value : (title ? title : '-- 请选择 --')}} <i class="dh dhxiala"></i> 
        </p>
        <el-collapse-transition>
            <div class="imSelectorMenu" v-show="show">
                <p @click="getMenu(null, mark)">{{title ? title : '-- 请选择 --'}}</p>
                <p v-for="(menu, index) in items" :key="index" @click="getMenu(menu, mark)">{{dataItem}}</p>
            </div>
        </el-collapse-transition>
    </div>
</template>

其次是js:

<script>
    export default {
        name: 'imSelector',
        props:['title', 'items', 'show', 'value', 'mark'],
        methods: {
            selectorToggle: function(event){
                this.$emit('click', event);
            },
            getMenu: function(value, mark){
                this.$emit('chose', {data: value, mark: mark});
            },
            mouseleave: function(event){
                this.$emit('mouseleave', event)
            }
        }
    }
</script>

先解释一下这几个事件:

然后是 props:

说明:<el-collapse-transition>这里是使用了 element-ui的过渡效果,与组件内容无关。样式部分就不贴了,没什么可说的。(其实是懒)

以上,一个基本的 select 组件就算可以用了,以后有时间可以优化一下,今天到此为止。
原文地址:http://blog.xuxiangbo.com/im-46.html

上一篇 下一篇

猜你喜欢

热点阅读