vue 封装组件
props 接收数据
props对象里面 键值 是对改数据的 数据类型 的规定。做了规范,使用者就只能传输指定类型的数据,否则报警告
先根据要求写出完整的代码,再一一用参数实现组件封装
这里试着封装一个select组件,主要是为了了解组件封装。参考自博客:https://www.cnblogs.com/pengfei-nie/p/9134367.html
效果:


sleceView:
<template>
<div class="partake">
<div class="f-search" :class="{searchInFous: this.fousFlag}">
<div class="f-searchIn">
{{this.searchV}}
<span :class="{searchActive: this.searchFlag}" @click="searchDown"></span>
</div>
<div class="f-searchXl" v-if="this.dataHas" :style="{height:this.searchFous, border:this.searchBorder}">
<div v-for="(item,index) in searchList" @click="choseValue(item.value, item.key)" :key="index">{{item.value}}</div>
</div>
<div class="f-searchXl" v-else >
<div>暂无数据</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'xuef',
props: {
searchList: Array,
selectValue: String
},
data() {
return {
searchV: '',
searchFlag: false,
searchFous: '0',
searchBorder: 'none',
fousFlag: false,
dataHas: true
};
},
methods:{
searchDown() {
this.searchFlag === false ? this.searchFlag = true : this.searchFlag = false
this.searchFous === '0' ? this.searchFous = 'auto' : this.searchFous = '0'
this.searchBorder === 'none' ? this.searchBorder = '1px solid #D9D9D9' : this.searchBorder = 'none'
this.fousFlag === false ? this.fousFlag = true : this.fousFlag = false
},
choseValue(value, key) {
this.searchV = value
this.searchDown()
this.$emit('selectFunction', value, key)
}
},
components:{
}
}
</script>
<style scoped rel="stylesheet/scss" lang="scss">
.f-search{
width: 250px;
height: auto;
position: relative;
margin-left: 20px;
box-sizing: border-box;
}
.f-searchIn{
width: 250px;
height: 35px;
line-height: 35px;
font-size: 0.95rem;
border-radius: 5px;
overflow: hidden;
position: relative;
background-color: white;
box-shadow: none;
box-sizing: border-box;
color: #000000;
padding-left: 10px;
border: 1px solid #A3A3A3;
}
.searchInFous{
border: 1px solid #57C4F6;
box-shadow: 0px 0px 5px #57C4F6;
}
.f-searchIn > span{
display: block;
width: 28px;
height: 28px;
background-image: url(../../assets/images/down.png);
background-size: 100% 100%;
background-repeat: no-repeat;
background-position: 0px -13px;
position: absolute;
top: 10px;
right: 5px;
}
.f-searchIn .searchActive{
background-position: 0px 12px;
top: -2px;
}
.f-search .f-searchXl{
position: absolute;
width: 100%;
height: auto;
max-height: 220px;
top: 41px;
left: -1px;
border-radius: 5px;
/*border: 1px solid #D9D9D9;*/
background-color: white;
overflow-x: hidden;
overflow-y: scroll;
}
.f-search .f-searchXl > div{
height: 35px;
line-height: 38px;
color: #000000;
padding-left: 25px;
font-size: 0.92rem;
}
.f-search .f-searchXl > div:hover{
background-color: #D5F1FD;
}
</style>

引用这个组件的view:useSelect
<template>
<div class="partake">
<section class="f-mainPage">
<search @selectFunction="selectFunc" :searchList="searchList" :selectValue="selectValue"></search>
</section>
</div>
</template>
<script>
import search from 'components/component/selectView';
export default {
name: 'xuef',
data() {
return {
searchList: [{key:'1',value:'草船借箭'},{key:'2',value:'大富翁'},{key:'3',value:'测试数据'}],
selectValue: '',
selectKey: ''
};
},
methods:{
selectFunc(val,key) {
this.selectValue = val
this.selectKey = key
console.log(this.selectKey)
console.log(this.selectValue)
}
},
components:{
search
}
}
</script>

vue 封装组件的更多相关文章
- vue封装组件的正确方式-封装类似elementui的组件
最近读了下element的源码,仿照他封装了两种不同的组件. 第一种:通过组件来调用显示的 <template> <!--src/component/custom/main.vue- ...
- vue 封装组件上传img
var _uploadTemplate = '<div>'+ '<input type="file" name="file" v-on:cha ...
- Vue 爬坑之路(九)—— 用正确的姿势封装组件
迄今为止做的最大的 Vue 项目终于提交测试,天天加班的日子终于告一段落... 在开发过程中,结合 Vue 组件化的特性,开发通用组件是很基础且重要的工作 通用组件必须具备高性能.低耦合的特性 为了满 ...
- seventBus(封装) 一个巧妙的解决vue同级组件通讯的思路
如果在你项目中需要多处用到同级组件通讯,而又不想去写繁琐的vuex,可以参考这个小思路.本人在写项目中琢磨出来的,感觉挺好用,分享一下. 1.在utils文件夹下添加BusEvent.js 注释已经很 ...
- vue封装一些常用组件loading、switch、progress
vue封装一些常用组件loading.switch.progress github文档https://github.com/zengjielin/vue-component-library loadi ...
- vue --》组件的封装 及 参数的传递
vue组件的定义 ● 组件(Component)是Vue.js最强大的功能之一 ● 组件可以扩展HTML元素,封装可重用代码 ● 在较高层面上,组件是自定义元素,Vue.js的编译器为他添加特殊功能 ...
- vue cli3.0 封装组件全局引入js文件并发布到npm
首先用 vue create创建一个项目 当前的项目目录是这样的: 首先需要创建一个 packages 目录,用来存放组件 然后将 src 目录改为 examples 用作示例 二.修改配置 启动项目 ...
- echars vue 封装全局组件 曲线 柱状图 同v-chars绿色系 配置样式
Echars vue封装 ,曲线图 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- vue.js组件化开发实践
前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了下面的内容.借油开车. 组件化 需求一到,接就是怎么实现,技术选型自然 ...
随机推荐
- Google Android SDK开发范例大全笔记 一
方法讲解 1 获取手机分辨率方法 DisplayMetrics private void getDiaplayMetrics() { DisplayMetrics dm = new DisplayMe ...
- day19模块1
http://www.cnblogs.com/Eva-J/articles/7228075.html#_label10 collections模块: 在内置数据类型(dict.list.set.tup ...
- ORACLE 根据 sql_id 查询绑定变量的传入值
查询当前查询: select b.NAME,b.POSITION,b.DATATYPE_STRING,b.VALUE_STRING,b.LAST_CAPTUREDfrom v$sql_bind_cap ...
- 精通ArrayList,关于ArrayList你想知道的一切
目录 精通ArrayList,关于ArrayList你想知道的一切 前言 ArrayList 内部结构,和常用方法实现 实例化方法 添加元素 add()方法 get()方法 移除元素 怎么扩容的 序列 ...
- thinkphp5调用阿里大鱼短信
:在Controller.php public function send() { if (request()->isPost()) { $phone = input('post.phone/s ...
- js-事件以及window操作
属性 当以下情况发生时,出现此事件 onblur 元素失去焦点 onchange 用户改变域的内容 onclick 鼠标点击某个对象 ondblclick 鼠标双击某个对象 onfocus 元素获得焦 ...
- C#代码执行耗时计算,此处是监测的mvc控制器方法
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u011511086/article/details/78710980using System;usi ...
- Mapreduce中maptask过程详解
一.Maptask并行度与决定机制 1.一个job任务的map阶段的并行度默认是由该任务的大小决定的: 2.一个split切分分配一个maprask来并行处理: 3.默认情况下,split切分的大小等 ...
- S0.3 直方图
目录 直方图(一) 直方图概念 直方图分类 直方图优点 直方图应用 opencv3直方图产生函数cvCalcHist() 画图函数 完整示例 直方图(一) 直方图概念 直方图是图像中像素强度分布的图形 ...
- RHEL5.8安装
创建完成后新的虚拟机.使用光盘启动后,启动界面如下图. 大概介绍下显示界面内容的意思: 1.To install or upgrade in graphical mde, press the ...