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活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了下面的内容.借油开车. 组件化 需求一到,接就是怎么实现,技术选型自然 ...
随机推荐
- VMware虚拟机从一台电脑复制到另一台电脑
1.选中.vmx文件和所有的.vmdk文件,添加到压缩文件 vmx是虚拟系统配置文件,而vmdk则是虚拟磁盘文件,它们都是VMware所支持的文件格式 2.复制压缩文件到另一台电脑上,并解压 3.在另 ...
- 分布式Session共享解决方案
分布式Session解决方案 Author:SimpleWu 分布式Session一致性? 说白了就是服务器集群Session共享的问题 Session的作用? Session 是客户端与服务器通讯会 ...
- 修正锚点跳转位置 避免头部fixed固定部分遮挡
如下锚点标签: <div id="id1"> <span class="kkAnchor"></span> 正文正文正文正文 ...
- bootstrap selectpicker控件select下拉框动态数据无法回显的问题
有关于selectpicker下拉框数据回显的问题,当查看一个对象的属性的时候, 发现有关于selectpicker的下拉框并没有将返回的数据进行回显,显示的都是请选择, 经查证,当查看属性的时候,他 ...
- 关闭 Window 之后,无法设置 Visibility,也无法调用 Show、ShowDialogor 或 WindowInteropHelper.EnsureHandle。
参考网址: 1.WPF Tips: Window.ShowDialog()方法:Cannot set Visibility or call Show, ShowDialog, or WindowInt ...
- vs2019离线安装包下载
https://docs.microsoft.com/en-us/visualstudio/install/use-command-line-parameters-to-install-visual- ...
- GIT初始学习记录
目录 GIT学习记录 配置github与gitlib两个账号 基本操作 git init:初始化仓库 git status:查看仓库状态 git add :向缓存区中添加文件 git commit 保 ...
- Linux和window的区别
免费与收费 最新正版Windows10官方售价¥888 Linux几乎免费(更多人愿意钻研开源软件,而收费的产品出现更多的盗版) 软件与支持 Windows平台:数量和质量的优势,补过大部分为收费软件 ...
- URL 链接中 井号#、问号?、连接符& 分别有什么作用?
在一个 URL 中可以包含很多的内容,其中不仅仅是包含 26 个英文字母,10 个罗马数字,中文汉字,还可以拥有井号“#”.问号“?”.连接符“&”等三种最常见的符号,那么这些符号在网站中都有 ...
- Chapter 2 Basic Elements of JAVA
elaborate:详细说明 Data TypesJava categorizes data into different types, and only certain operationscan ...