当前位置: 首页 > wzjs >正文

国企网站建设合同抖音seo软件

国企网站建设合同,抖音seo软件,阿里云做网站用哪个镜像,做jsp网站用哪些软件近日工作中,遇到一个需求,就是select的有一个前置切换条件,有些条件需要时输入,有些条件需要时下拉选择,但是在切换的时候,后面的这个输入或者选择组件不能闪烁,于是也就只能采用select去实现&a…

近日工作中,遇到一个需求,就是select的有一个前置切换条件,有些条件需要时输入,有些条件需要时下拉选择,但是在切换的时候,后面的这个输入或者选择组件不能闪烁,于是也就只能采用select去实现,而不能用select和input通过v-if切换,或者v-show动画实现。

先看下效果

效果一:前置切换为可输入类型,可接受输入

效果二:前置条件切换为下拉选择状态,可接受下拉选择

效果三、可动态新增和删除

效果四、数据回显

下面我们讲一下这个功能的实现过程。

一、组件配置

首先我们根据官方ant-design-vue 4的select组件,我们看到有一个searchValue,value这两个属性配置,在我们开启showSearch属性后,searchValue就是我们获取输入内容的配置项,value(v-model)则是我们通过控制select下拉框选择option后的值。这个是核心配置。

value(v-model)是双向绑定的,你可以不考虑其获取值的问题,以及数据回填时展示的问题。官方文档虽然没说searchValue是双向绑定,其实在开启showSearch时,你可以利用onSearch事件给绑定的变量赋值。这时事件回调中你可以拿到输入的值。

接着就是通过open属性去控制这个下拉框的展示。

说到这里那么我们利用几个核心的属性就可以控制基本的需求了。

1. 为select模式时可实现根据输入筛选

当然这是一个常见场景了,即在你开启open时,利用输入值可对下拉框的内容进行过滤。这时就是我们增加filterOption配置即可。

2. 当前前置条件切换时,我们需要清空select的值

因为前置切换,可以会切换到需要输入的选项也可能切换到其他select选项但是字典值不同,所以切换后需要清空原来的值,当然为了能够实现清空后显示pladeholder需要置将searchValue和value绑定的变量为undefined。

二、细节需求

这个细节需求,就是searchValue和value配置耦合的情况,即在select为选择option的模式时,又能够输入并搜索。

所以这个时候我们即能够拿到seachValue的值,也可以拿到value值,当他通过搜索拿到某一项值时,我们需要再change事件回调中,把searchValue清空掉。同时我们又需要把open同时关掉。

这里就有一个细节问题:

1. 单选

如果此时select在option展开的情况下,如果支持单选,则需要关掉option下拉,因为这些行为目前都依赖我们的open属性控制。

2. 多选 

但是如果是多选,我们则不需要收起option下拉,依赖其组件内部的控制(失去焦点时关闭)。

3. 奇葩需求处理

现实的需求是,单选模式下,选中一个值后,输入框内回显了刚才选中的option对象的label,单此时并没有失去焦点(因为开启了showSearch),再次点击该文本框要能唤起option下拉,原本的组件自身逻辑,是失去焦点后,再次点击获取焦点就会再此展开option下拉,因为这里这个奇葩需求,我开始让选择一个option值后,强制失去焦点,这样他再点击,则可以唤起option下拉。被迫通过加ref,动态部分则通过函数收集ref,然后通过ref在dom操作下失去焦点。

selectRef.value && selectRef.value.blur();

三、代码

            <Select:ref="(dom: HTMLElement) => setDynamicSelectRef(index, dom)"v-model:value="item.formData.keyWords":class="{ keywords: true, large: props.size === 'large' }":defaultOpen="false":labelInValue="true"@focus="selectFocus(index)"@blur="selectBlur(index)"@search="(value: string) => onSearch(value, index)"@select="(value: ObjectAny) => onSelect(value, index)"@change="(value: ObjectAny) => selectChange(value, index)":open="selectOpen(item.formData.keyCategory, index)":searchValue="item.formData.searchValue":showSearch="true":allowClear="activeCategory(item.formData.keyCategory).dicName ? true : false":showArrow="activeCategory(item.formData.keyCategory).dicName ? true : false":filterOption="filterOption":status="item.formRules.keyWords.status":placeholder="activeCategory(item.formData.keyCategory).placeholder":options="dynamicOptions(activeCategory(item.formData.keyCategory)?.dicName)"></Select>

这里面就是整体配置:
activeCategory这个函数(我用computed包装了下),就是根据当前选中的前置条件判断是否为需要展示select的option的判断boolea值。

大概过程就是这样。

1. 处理特殊情况

这里的特殊情况是,我们在一些特殊情况下,需要在对应的条件下,回显一条无法匹配到option的数据,支持特殊场景的搜索(label, value一致,后端需要的其实是一个label)。这时候我们就将需要回填的数据做成一个对象,key,label,value均相同的一个对象,作为默认值回填表单(当然他重新搜索肯定就会搜不到,这就是特殊情况)。

2. 就是清空逻辑实现

showClear,目前我们的处理逻辑是只有是select为option的情况下,我们支持显示清空操作。如果是输入模式,我们不支持清空处理。这是因为select组件的清空操作,其实是触发的change事件,当我们模式是select的输入框,不显示option下拉时,清空并不会触发change事件。

目前暂时没有处理,后期我们实现的话,我会更新。

http://www.dtcms.com/wzjs/43606.html

相关文章:

  • 电商平台代运营公司周口seo公司
  • 做竞猜网站犯法吗营销推广网站
  • 注册网站怎么办理流程企业百度推广怎么收费
  • 阿里云快速做网站百度网页怎么制作
  • 哪些公司提供微信做网站服务完整html网页代码案例
  • 网站网页策略个人免费开发app
  • 推荐做ppt照片的网站最有效的广告宣传方式
  • 网站结构如何优化网站快照优化公司
  • 彩票网站的推荐怎么做汕头最好的seo外包
  • 门户网站如何做性能测试成都网站seo性价比高
  • 北海哪里做网站建设如何制作网页教程
  • 为什么用开源建站合肥seo培训
  • 东昌府做网站推广东营网站建设
  • 建立网站就是制作网页对吗百度关键词热搜
  • 永嘉网站建设工作室今日的重大新闻
  • 合肥网站建设第一品牌2024最火的十大新闻
  • 网站排名做不上去汕头网站建设优化
  • 手机怎么做网站添加背景音乐seog
  • 南昌网站建设公务app推广软文范文
  • 做的网站怎么放到域名企业seo排名有 名
  • 武汉网站公司企业如何进行网站推广
  • 手机网站模板 怎样做游戏推广员拉人犯法吗
  • 可信网站认证多少钱重庆森林粤语完整版在线观看免费
  • 做网站需要公司有哪些seo顾问能赚钱吗
  • 手机网站 软件桂林seo
  • 国产免费cad软件下载北京seo网站优化公司
  • 日本 男女做受视频网站网络营销系统
  • 如何做好网站首页建设杭州seo首页优化软件
  • 儿童摄影作品网站排名第一的玉米品种
  • 无经验可以做网站编辑吗seo推广是做什么