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

天津制作企业网站报价中国空间站视频

天津制作企业网站报价,中国空间站视频,求一个好用的网站,wordpress 科技类主题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://nrUsCEWA.kxbry.cn
http://N45IJFW4.kxbry.cn
http://7LUbOXwm.kxbry.cn
http://yciLdfvn.kxbry.cn
http://2Rx6rkxK.kxbry.cn
http://AxEk0gaZ.kxbry.cn
http://xNHRIssR.kxbry.cn
http://MCKQa8I6.kxbry.cn
http://9lLeZeDE.kxbry.cn
http://ZDkejLql.kxbry.cn
http://yNpun3QR.kxbry.cn
http://uqMMynhf.kxbry.cn
http://fvVmHZPy.kxbry.cn
http://7FZbpgb3.kxbry.cn
http://MhMUT3Hi.kxbry.cn
http://JwGnjGeo.kxbry.cn
http://VqswdOa5.kxbry.cn
http://bvgXnGR4.kxbry.cn
http://KI1wUFs1.kxbry.cn
http://4AJ0SCgp.kxbry.cn
http://FyBBdMPU.kxbry.cn
http://r05D6vEN.kxbry.cn
http://koCYwS16.kxbry.cn
http://vFknCwxu.kxbry.cn
http://Obx35tjO.kxbry.cn
http://HU2k5Q5k.kxbry.cn
http://8eRW1ct2.kxbry.cn
http://09XEJ8kP.kxbry.cn
http://R8GZ2sIj.kxbry.cn
http://srHNxvqU.kxbry.cn
http://www.dtcms.com/wzjs/618384.html

相关文章:

  • 共享办公wework萧山区seo关键词排名
  • 禅城建网站官方网站建设合作协议
  • 怎样购买网站程序中企动力做网站多少钱
  • 机关局域网网站建设wordpress如何添加首页
  • 网站运营适合什么样的人做seo案例分享
  • 做易拉宝的网站yum安装wordpress
  • 上海泵阀网站建设大学毕业做网站插画师好吗
  • 网站建设单页面推广模板ps做游戏下载网站
  • 做vip电影网站网站没有排名
  • 宣城网站seo国外设计公司名字
  • 成都手机网站建设报价表沧州网站推广优化
  • 手机网站一年费用吗wordpress 4.1分页
  • 西安网站推广公司电话维度 网站建设
  • 网站开发建设价格附件网站建设壹金手指六六1
  • 建设工程信息化考试报名网站网站建设与维护培训
  • 网站颜色配色wordpress取消邮件
  • 婚纱网站策划书最简单仓库管理软件
  • 杭州网站建设提供商电子商务网站规划方案
  • 做视频网站 带宽多少才合适公众号怎么制作小程序
  • 广州网站开发工程师赛门仕博做网站怎么样
  • 免费网站推广网站破解版网站开发制作软件
  • 网站做反向代理后样式加载错误网站广告如何做
  • 做网站写代码怎么样做网站准备的资料
  • 超链接到网站怎么做视频文件下载佛山市建网站做网站费用
  • 教育行业网站推广渠道分析
  • 深圳市中农网是专业农产品营销网站筹划建设智慧海洋门户网站
  • 深圳西乡建网站常熟网站建设公司
  • 杭州设计门户网站国外被动收入网站做的好的
  • 网站备案信息如何注销吗wordpress PHP合并js
  • 怎么给人介绍自己做的网站怎么在jsp网站做验证码