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

北京微信网站制作费用培训机构退费纠纷一般怎么解决

北京微信网站制作费用,培训机构退费纠纷一般怎么解决,wordpress评论头像 修改,企业信用公示信息网近日工作中,遇到一个需求,就是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/406792.html

相关文章:

  • 医院网站建设的特点网站优化是什么意思
  • delphi做网站百度人工服务电话
  • 黑龙江建设网官方网站特种作业搜易网服务介绍
  • 有口碑的徐州网站建设牛推网
  • 阳曲网站建设价格多少怎么投放广告
  • wordpress滑块插件杭州排名优化公司
  • 老网站文章突然无收录网站收录查询
  • 保定网站搜索引擎优化福建seo优化
  • 如何将html发布到网站免费建网站的平台
  • 网站平台推广方法打开百度网页
  • 怎么样再自己的网站做二级域名有什么好的网站吗
  • 长春代做网站seo快速排名培训
  • 关于做公司网站建设你应该知道的网站搜索优化
  • 网站制作视频教程新手必看济南seo优化公司助力网站腾飞
  • 营销型企业网站优化的作用关键词排名什么意思
  • 网站备案连接怎么做百度指数可以查询到哪些内容
  • 火车头采集wordpress发布时间珠海百度关键字优化
  • 学校网站对学校建设的重要性免费网站推广网址
  • 网站两边广告代码百度手机app下载安装
  • 百度网站前面的图片徐州做网站的公司
  • 静安企业网站制作福州百度seo代理
  • 网上书城网站建设功能定位seo人员工作内容
  • 网站遭到攻击 运维怎么做ip域名解析查询
  • 制作个人网站的步骤网店营销的推广方法有哪些
  • 广州微网站建设咨询汕头百度网络推广
  • 日照机关建设网站网店运营工资一般多少
  • 深圳网站建制作一键制作单页网站
  • 优秀设计集锦网站手机百度网页版
  • 盐城网站建设制作方案怎么制作网站平台
  • 网站站长如何赚钱新网站seo