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

做外贸网站的好处网站建设框架程序

做外贸网站的好处,网站建设框架程序,常州企业网站建设,微信创建小程序怎么弄1、使用指令 当所需功能只能通过直接的 DOM 操作来实现时&#xff0c;才应该使用自定义指令。可使用方法2封装成共用函数&#xff0c;但用指令他人复用时比较便捷。 <el-tablev-loading"tableLoading"border:data"tableList"default-expand-allrow-key…

1、使用指令

当所需功能只能通过直接的 DOM 操作来实现时,才应该使用自定义指令。可使用方法2封装成共用函数,但用指令他人复用时比较便捷。

        <el-tablev-loading="tableLoading"border:data="tableList"default-expand-allrow-key="id":tree-props="{children: 'children',}"><el-table-columnalign="center"label="下拉框"prop="selectProp"><template #default="{ row }"><el-selectv-model="row.selectProp"v-auto-selectclearablefilterableplaceholder="请选择下拉框数据"><el-optionv-for="item in select_data_source":key="item.value":label="item.label":value="item.value"/></el-select></template></el-table-column></el-table>
<script setup>
import vAutoSelect from '@/directives/auto_select_directive'
</script>
//auto_select_directive.ts文件
import type { Directive } from 'vue'interface ExtendedElement extends HTMLElement {_blurHandler?: (e: Event) => void_focusHandler?: (e: Event) => void_observer?: MutationObserver_currentDropdown?: HTMLElement | null
}const vAutoSelect: Directive = {mounted(el: ExtendedElement) {const selectInput = el.querySelector('.el-input__inner')if (!selectInput) return// 精准定位当前下拉框const getCurrentDropdown = () => {const activePopper = document.querySelector('.el-popper.el-select__popper[aria-hidden="false"]') as HTMLElement | nullconst selectWrapper = selectInput.closest('.el-select')if (activePopper && selectWrapper) {// 可以根据实际情况添加更多的判断条件,确保是当前 select 对应的下拉框return activePopper}return null}// 核心选择逻辑const autoSelectHandler = () => {const currentDropdown = getCurrentDropdown()if (!currentDropdown) {return}const visibleItems = currentDropdown.querySelectorAll<HTMLLIElement>('.el-select-dropdown__item:not([style*="display: none"])')if (visibleItems.length === 1) {visibleItems[0].click()const component = (el as any).__vueParentComponent?.ctxcomponent?.handleClose?.()}}// 事件处理器const handleFocus = () => {el._currentDropdown = getCurrentDropdown()}const handleBlur = () => {autoSelectHandler()}// 智能监听器const initObserver = () => {//获取当前激活的下拉框元素const dropdown = getCurrentDropdown()if (dropdown) {// MutationObserver 是一个用于监听 DOM 变化的 API,它接受一个回调函数作为参数。它允许你异步地监听 DOM 的变动,如节点的添加、删除、属性的修改等,并在变动发生时执行相应的回调函数el._observer = new MutationObserver((mutations) => {
// mutations:一个包含所有变化记录(MutationRecord 对象)的数组。mutations.forEach((mutation) => {if (mutation.type === 'attributes' &&mutation.attributeName === 'style') {autoSelectHandler()}})})el._observer.observe(dropdown, {attributes: true, // 监听属性变化--布尔值,指示是否观察目标节点的属性变化attributeFilter: ['style'], // 只监听 'style' 属性的变化--字符串数组,指定要观察的属性名称})}}// 事件绑定selectInput.addEventListener('focus', handleFocus)selectInput.addEventListener('blur', handleBlur)el._focusHandler = handleFocusel._blurHandler = handleBlur// 初始化监听initObserver()},beforeUnmount(el: ExtendedElement) {// 清理事件const selectInput = el.querySelector('.el-input__inner')if (selectInput) {if (el._focusHandler) {selectInput.removeEventListener('focus', el._focusHandler)}if (el._blurHandler) {selectInput.removeEventListener('blur', el._blurHandler)}}// 清理 Observerel._observer?.disconnect()//调用 disconnect 方法可以停止观察,释放资源delete el._currentDropdown},
}export default vAutoSelect

2、封装成共用函数

在输入文本进行搜索时,获取不到el-select内部匹配后的数据,故在失去焦点时,模拟搜索,获取筛选后的结果,当有且只有一条数据时,将那条数据赋给v-model绑定的值.

 <el-tablev-loading="tableLoading"border:data="tableList"default-expand-allrow-key="id":tree-props="{children: 'children',}"><el-table-columnalign="center"label="下拉框"prop="selectProp"><template #default="{ row }"><el-selectv-model="row.selectProp"clearablefilterableplaceholder="请选择下拉框数据"@blur="(e) => {selectSearchAuto(e,(newValue) => (row.selectProp= newValue),select_data_source)}"><el-optionv-for="item in select_data_source":key="item.value":label="item.label":value="item.value"/></el-select></template></el-table-column></el-table><script setup>import { selectSearchAuto } from '@/utils'
</script>
//utils/index.ts文件
export function selectSearchAuto(event: { target: { value: string | undefined } },setValueCallback: (arg0: any) => void,dataList: any[]
) {const query = event.target.value?.trim()if (!query) returnconst filteredOptions = dataList.filter((item) => item.label.includes(query))if (filteredOptions.length === 1) {setValueCallback(filteredOptions[0].value)}
}

使用成本相对较高


文章转载自:

http://i40zFTiM.mrLkr.cn
http://DZVdLMgk.mrLkr.cn
http://I7iltQBI.mrLkr.cn
http://gskFGGbW.mrLkr.cn
http://gImHn6kw.mrLkr.cn
http://3YnuhrsC.mrLkr.cn
http://EFAeXwdk.mrLkr.cn
http://R2Zav9vz.mrLkr.cn
http://3ySs9dkG.mrLkr.cn
http://ozMgS31E.mrLkr.cn
http://aA90wzYy.mrLkr.cn
http://MKx240XA.mrLkr.cn
http://KmT9zgoy.mrLkr.cn
http://WdkBP9Gj.mrLkr.cn
http://Xmjuryvp.mrLkr.cn
http://fFb5M4nK.mrLkr.cn
http://7umvi6lh.mrLkr.cn
http://XEDVJeSd.mrLkr.cn
http://kli1u1Qi.mrLkr.cn
http://vFdiCCqd.mrLkr.cn
http://2Gq5AFff.mrLkr.cn
http://uRMXbeWh.mrLkr.cn
http://yZZSps6p.mrLkr.cn
http://EHZabsVX.mrLkr.cn
http://nAc2mw7C.mrLkr.cn
http://49g7raZF.mrLkr.cn
http://hA5K8SyS.mrLkr.cn
http://wf9pXcBN.mrLkr.cn
http://gG6u2Mgl.mrLkr.cn
http://ZltNCUSF.mrLkr.cn
http://www.dtcms.com/wzjs/724614.html

相关文章:

  • 做爰网站视屏wordpress伪静态路径写法
  • 网站开发河南小红书流量推广
  • 网站建设的功能模型自己做的网站图片加载过慢
  • 智能自助建站系统源码没有网站可以做seo排名吗
  • 电商网站设计公司力推亿企邦100网站建设
  • 福田网站的建设推荐大良网站建设
  • 做门户网站价格山东做网站的公司
  • 互助网站建设公司wordpress导航美化
  • 用云怎么做网站影视公司网站设计
  • 国内全屏网站欣赏微信朋友圈广告在哪里做
  • 企业网站的建设与实现wordpress会话过期
  • 网站推广计划包含的主要内容wordpress侧边栏怎么加php代码
  • 手机网站建设开什么类型的票济南网站制作搜到
  • 怎么查看网站是用什么系统做的上海网站建设多少钱
  • 公司域名注册后怎么建设网站wordpress所有密码
  • wordpress模板安装完没有导航栏sem和seo的关系
  • 网站模板的修改sem
  • 郑州网站建设开拓者天津企业网站建站
  • 可以免费商用国外印花图案设计网站用户搭建网站
  • 公司做网站费会计科目机械加工网址大全
  • 网站建设的具体流程图常见的网络营销形式有哪些
  • 动漫视频网站模板中企动力做的 石子厂网站
  • 南宁网站设计方法中国电信网站备案流程
  • wordpress 扒站教程对中国建设银行网站的评价
  • 北京酷站科技有限公司大连今年大项目建设
  • 市直部门网站建设方案免费模版网站
  • wordpress vrseo网站设计就业前景
  • 郑州设计师网站大全四川省城乡建设网网站
  • 网站搜索条怎么做软件工程师工作内容
  • 层次结构分明的网站配色方案国内网站排名