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

封装element-plus的组件暴露原生属性和方法

文章目录

  • 问题:
  • 解决方案:

问题:

正常封装element-plus的组件例如el-select,如果不处理下,会导致在具体页面使用时候,传递el-select原生属性和方法,在封装的组件内获取不到。

解决方案:

在封装组件时候,使用v-bind="$attrs" v-on="proxyEvents"接收属性和方法

  <div>$attrs:{{ $attrs }}</div>
  <el-select v-bind="$attrs" v-on="proxyEvents" style="width: 100%">
      <el-option v-for="item in list" :key="item[valueKey]" :label="item[labelKey]" :value="item[valueKey]" />
  </el-select>


	// 属性处理
	const attrs = useAttrs() // 获取绑定值就是attrs.modelValue
	
	// 事件代理
	const proxyEvents = computed(() => {
	  const { on } = attrs
	  return Object.keys(on || {}).reduce((acc: Record<string, any>, key) => {
	    acc[key] = (...args: any[]) => (on as any)[key](...args)
	    return acc
	  }, {})
	})

使用组件时候,就按照原生的el-select方式传递属性和方法即可
v-model:绑定值
v-model:otherVal :其他绑定值

    <MyScrollSelect
      @change="change"
      @focus="focus2"
      v-model="form.id"
      v-model:otherVal="form.name"
      placeholder="滚动加载或搜索-单选"
      clearable
      filterable
    />

文章转载自:
http://afterripening.gbfuy28.cn
http://androgenous.gbfuy28.cn
http://angstrom.gbfuy28.cn
http://bilboa.gbfuy28.cn
http://advantageous.gbfuy28.cn
http://abyssinian.gbfuy28.cn
http://caespitose.gbfuy28.cn
http://abask.gbfuy28.cn
http://affiliate.gbfuy28.cn
http://blench.gbfuy28.cn
http://americana.gbfuy28.cn
http://accelerated.gbfuy28.cn
http://antilysin.gbfuy28.cn
http://apelles.gbfuy28.cn
http://chalcogen.gbfuy28.cn
http://antimere.gbfuy28.cn
http://bellicosity.gbfuy28.cn
http://artefact.gbfuy28.cn
http://actor.gbfuy28.cn
http://bimanual.gbfuy28.cn
http://bouillabaisse.gbfuy28.cn
http://chromiderosis.gbfuy28.cn
http://bezier.gbfuy28.cn
http://caveatee.gbfuy28.cn
http://artisanate.gbfuy28.cn
http://bimanous.gbfuy28.cn
http://aspirator.gbfuy28.cn
http://beachball.gbfuy28.cn
http://cataclasm.gbfuy28.cn
http://antiquity.gbfuy28.cn
http://www.dtcms.com/a/74410.html

相关文章:

  • MultiPost--多平台博客发布工具
  • 【大语言模型_5】xinference部署embedding模型和rerank模型
  • Hyperlane:Rust 语言打造的 Web 后端框架新标杆
  • MySQL意向锁我该怎么理解?
  • 自然语言处理(2)—— NLP之百年风雨路
  • 第七次作业,网络防御高级
  • 适配iOS 18:检测并移除三方库中的 bitcode 部分
  • 大数据学习(70)-大数据调度工具对比
  • Trae IDE 介绍与使用教程
  • 大模型架构记录6-推荐算法
  • leetcode29. 两数相除-medium
  • TSB - AD 解读 — 迈向可靠、透明的 TSAD 任务
  • Power Apps 技术分享:画布应用使用表单控件
  • 接入层、汇聚层 和 核心层
  • WebRTC 介绍
  • PyQt6内嵌http.server Web 和Flask Web服务器方法详解
  • 【java零碎知识点】------返回值类型的大小排序
  • Java概述
  • cesium 实现万级管网数据渲染,及pickImageryLayerFeatures原生方法改写
  • 模型蒸馏实战qwen2.5系列模型
  • Android Room 框架测试模块源码深度剖析(五)
  • 汇编基础知识
  • 压测实战 | 微信小程序商城 “双 11” 的压测实践
  • 开源文档管理系统 Paperless-ngx
  • Java学习------内部类
  • 4G模组Air780EPM:解锁物联网时代的硬件接口奥秘!
  • 【eNSP实战】(续)一个AC多个VAP的实现—将隧道转发改成直接转发
  • 有了大模型为何还需要Agent智能体
  • Mysql-经典实战案例(3): pt-archiver 实现 MySQL 千万级大表分库分表(上)
  • 设计模式之外观模式:原理、实现与应用