我要投稿
投诉建议
首页
Web前端
后端技术
数据应用
编程语言
其他语言
技术落地
科技领域
SEO
科技迭代
当前位置:
首页
>
Web前端
>
vue.js
vue组件---搜索框
时间:2023-03-31 14:26:44
vue.js
基本形式高级搜索搜索补全组件基本代码Vue.component('ym-search',{template:`
搜索
清除
折叠
搜索
高级搜索
{{item.name}}:{{item.value}}
展开`,data(){return{searchHeight:'52px',//搜索框默认高度为52showHighBtn:false,//是否显示“高级搜索”按钮hideBtn:false,//隐藏“搜索”按钮和“高级搜索”按钮showResult:false,//搜索完成后是否显示搜索结果}},props:{//搜索元素个数itemNum:{type:Number,default:1},//搜索后要显示的结果集results:Array},watch:{//页面初始化resu时有些条件需要默认lts(val){this.$nextTick(()=>{if((val.length>0)&&this.showHighBtn){this.showResult=true}})}},mounted(){//根据搜索框和搜索元素的宽度,计算是否显示“高级搜索”按钮this.$nextTick(()=>{letwrapW=+window.getComputedStyle(this.$refs.searchWrap).width.replace('px',''),itemW=322,btnW=180,n=Math.floor((wrapW-btnW)/itemW)if(this.itemNum>n){this.showHighBtn=trueif(this.results.length>0)this.showResult=true}})},methods:{//ClearcleanAll(){this.$emit('clear')},//搜索toSearch(tag){this.$emit('search')这。$nextTick(()=>{//如果是高级中的搜索按钮,点击显示搜索内容if(+tag===1){如果(this.results.length>0){this.showResult=true}else{this.searchHeight='52px'this.hideBtn=false}}})},showSearch(){this.showResult=falseif(this.results.length>0){this.searchHeight='auto'this.hideBtn=true}},//显示高级搜索内容toHighSearch(){this.searchHeight='auto'this.hideBtn=true},//关闭slideUp(){if(this.results.length>0){this.showResult=true}else{this.searchHeight='52px'this.hideBtn=false}}}})同时全局混入Vue也写了。mixin({data(){return{//所有搜索属性v-modelcollectionsearchData:{},//搜索结果--forDisplaysearchResults:[],//搜索属性请求数据集requestData:{},}},methods:{//toSearchBefore和toSearchAfter方法可以在调用页面自定义toSearch(){if(!!this.toSearchBefore){this.toSearchBefore.apply(this,arguments)}let{results,request}=packageRequestAndResults(this.searchData)this.searchResults=resultsthis.requestData=requestthis.pageChange(1)if(!!this.toSearchAfter){this.toSearchAfter.apply(this,arguments)}},clearSearch(){this.searchData={}this.requestData={}this.searchResults=[]}}})上面的代码涉及到一个packageRequestAndResults方法//根据searchBaseData和searchData组件显示结果和请求数据requestfunctionpackageRequestAndResults(searchData){letresults=[]//搜索结果显示letrequestst={}//用于请求接口数据Object.keys(searchData).forEach(k=>{letstring_empty=Object.prototype.toString.apply(searchData[k])==='[objectString]'&&searchData[k]==='',array_empty=Object.prototype.toString.apply(searchData[k])==='[objectArray]'&&searchData[k].length===0if(!string_empty&&!array_empty&&!!searchData[k]){letobj=searchBaseData[k],name=''if(!!obj){if(obj.type==='input'){name=searchData[k]请求[k]=searchData[k]}elseif(obj.type==='date'){name=searchData[k][0]+'~'+searchData[k][1]request['START'+k]=searchData[k][0]request['END'+k]=searchData[k][1]}else{name=obj.getName(searchData[k])请求[k]=obj.getVal(searchData[k])}results.push({name:obj.name,value:name})}}})return{results,request}}上面有个searchBaseData,接下来的页面会使用
微信昵称
关注时间
身份
item-num必须和搜索项数一致,绑定结果,clear,search不需要重命名,因为上面的mixins都是defined,除非不能满足要求,可重定义v-model的格式必须是searchData.xxx,其中xxx是请求参数的key,如果是日期格式,key是STARTSUBSCRIBETIME和ENDSUBSCRIBETIME,START和END需要去掉,如果没有,下面再说重要链接,必须声明一个searchBaseData对象,包括每个搜索itemletsearchBaseData={//如果显示和值一致,可以直接指定type=inputKEYWORD_SEARCH:{name:'WeChatnickname',type:'input'},//如果requestkey以'START'和'END'开头,可以直接指定type=date,如果不是,则使用followingmethodSUBSCRIBETIME:{name:'关注时间',type:'date'},//如果显示和值不规则,可以指定getName和getValFCUSTOMERSTATUS:{name:'identity',getName(val){letarr=['potential','owner','follow','member']returnarr[+val]},getVal(val){返回val}},}代码在这里结束
上一篇:
vuewebpackversioniniterror
下一篇:
【vue3源码】十三、认识Block
vue组件---搜索框相关文章
HBase的核心组件和功能介绍
深入了解HBase的功能组件和架构设计0952
HBase架构解析:四大组件的作用和协作
HBase架构的核心组件和非核心组件
HBase分布式架构的组件及其功能介绍
HBase的基本架构及其组件介绍
HBase的核心组件:HMaster、HRegionServ
Hadoop生态圈中的三大组件:HDFS、HBase和Map
HBase的核心功能组件及其作用
HBase的内部原理和组件分析
HBase的架构与组件分析
HBase的核心组件及其作用
HBase的架构与组件分析4248
HBase组件介绍:了解HMaster、HRegionSer
HBase的三大组件:Master、RegionServer
MongoDB分片集群组件介绍:如何实现高可用性和高性能
Vue如何通过Redis实现数据缓存和持久化
Redis数据库一致性组件的原理与实现
SQL Server的体系结构和组件介绍
SQL Server 2019安装教程:如何选择合适的功能组
最新推荐
1
从可穿戴医疗看模拟组件的集成与独立
2
智能手表产品流行的小型显示组件需求激增
3
探索Apple Watch S1芯片包含30个独立组件
4
可穿戴设备的元年已经过去了!组件让其发挥更大的作用
5
东芝发布眼镜式穿戴终端“WearvueTM TG-1”
6
Defender------企业的“防御卫士”
7
新飞智能家居-----智能家居的领跑者
8
东芝推出新款穿戴式终端Wearvue TG-1智能眼镜
9
第一个塑料柔性磁存储芯片的问世将成为可穿戴设备的关键组件
10
未来科技Vue 3D打印智能眼镜
猜你喜欢
1
2023年金山办公技术开放日在武汉举行,邀请体验WPS全系A
2
山东对外贸易职业学院---e启创
3
苹果A14芯片组件曝光,可能今年4月由台积电生产
4
iPhone 14系列将采用打孔屏:Face ID等组件或将
5
OPPO公开“柔性显示组件”相关专利,可提高柔性显示屏支撑强
6
旭日东升合作共赢丨旭和科技一期高效N型电池及组件项目正式投产
7
荣获荣誉加冕! AOC荣获2023京东3C数码“最佳先锋电脑
8
微信:小游戏新增激励视频广告组件、防沉迷界面等能力
9
Vue实例的el属性
10
如何排查Vue项目的加载问题
11
如何调试JavaScript 代码,特别是涉及到Vue和Ax
12
Vue.js的问题到@click事件和methods中的lo
13
今年,每部智能手机平均配备 3.5 个镜头,多摄像头镜头组件
14
苹果寻找无线充电组件供应商,为明年的 iPhone 做准备
15
组件已准备就绪,台积电正在量产 iPhone 8 的 10
16
苹果供应商:为iPhone 8准备3D传感组件
17
传闻 iPhone 7 将采用电容式组件取代传统 Home
18
HBase安装部署前的准备工作:必备组件介绍
19
HBase的核心组件:库函数的作用和特点
20
HBase的架构与组件介绍