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

网站建设 定制广东省最新新闻

网站建设 定制,广东省最新新闻,中国设计网室内,大连市中心是哪个区封装组件使用v-model 使用方法props接受value值,当值发生变化的时候再通过this.$emit("input", newValue),则实现了简单组件的v-model封装,如果不使用第三方UI可以接受到的值使用watch或者计算属性保存,然后再通过事件派发自己保存…

封装组件使用v-model 

使用方法props接受value值,当值发生变化的时候再通过this.$emit("input", newValue),则实现了简单组件的v-model封装,如果不使用第三方UI可以接受到的值使用watch或者计算属性保存,然后再通过事件派发自己保存的值

$attrs可以透传组件上的属性,如果使用 props接收了某个属性,则从$attrs移除这个属性

代码:如elInput组件

 保存值写法可使用计算属性也可以使用监听器

<template><div class="switchWrap"><el-inputref="refInput"v-bind="$attrs":value="internalValue"@input="updateValue"></el-input></div>
</template><script>
export default {props: {value: [Boolean, String, Number],},data() {return {};},computed: {internalValue() {return this.value;},},methods: {updateValue(newValue) {this.$emit("input", newValue); // 触发内部 input 事件 让父组件可以v-model绑定},},mounted() {},
};</script>

 不保存值可直接派发值

<template><div class="switchWrap"><el-inputref="refInput"v-bind="$attrs":value="value"@input="updateValue"></el-input></div>
</template><script>
export default {props: {value: [Boolean, String, Number],},data() {return {};},computed: {},methods: {updateValue(newValue) {this.$emit("input", newValue); // 触发内部 input 事件 让父组件可以v-model绑定},},mounted() {},
};</script>

 使用方法

 <elInput v-model="value"></elInput >

 UI组件封装方法

 $attrs和$slots可以透传属性和插槽 然后通过解构插槽——>#[插槽名]=value 就可以获取传递的值,再通过遍历组件原型上的方法,然后把原型上的方法放在组件上,就可以使用ref透传

使用计算属性 slotsKeys 和 scopedSlotsKeys

 是为了动态获取父组件传递的具名插槽($slots)和作用域插槽($scopedSlots),

  并根据需要排除掉某些已使用的插槽,以便在渲染时可以有选择地展示插槽内容。

<template><div class="switchWrap"><el-inputref="refInput"v-bind="$attrs":value="value"@input="updateValue"><template v-for="slotName in scopedSlots" #[slotName]="scoped"><slot :name="slotName" v-bind="scoped"></slot></template><template v-for="slotName of namedSlot" v-slot:[slotName]><slot :name="slotName"></slot></template></el-input></div>
</template><script>
export default {props: {value: [Boolean, String, Number],},data() {return {usedSlots: [], // 已使用的插槽};},computed: {// 使用计算属性 namedSlot 和 scopedSlots//  是为了动态获取父组件传递的具名插槽($slots)和作用域插槽($scopedSlots),//  并根据需要排除掉某些已使用的插槽,以便在渲染时可以有选择地展示插槽内容。namedSlot() {return Object.keys(this.$slots).filter((key) => !this.usedSlots?.includes(key));},scopedSlots() {return Object.keys(this.$scopedSlots).filter((key) => !this.usedSlots?.includes(key));},},methods: {updateValue(newValue) {this.$emit("input", newValue); // 触发内部 input 事件 让父组件可以v-model绑定},},mounted() {for (let key in this.$refs.refInput) {if (typeof this.$refs.refInput[key] == "function") {this[key] = this.$refs.refInput[key];}}},
};
</script>

 使用方法

       <inputUi v-model="inputValue" @input="getInfo" ref="refInput"><template #prepend>Http://</template></inputUi>

http://www.dinnco.com/news/49476.html

相关文章:

  • dedecms网站的下载电脑优化是什么意思
  • 东莞企业网站建设开发公司视频推广渠道有哪些
  • 怎么做才能提高网站权重千峰培训出来好就业吗
  • 网站的测试和网站上线湖南seo优化
  • 上海浦东哪里有做网站的公司济南市新闻最新消息
  • 免费做店招的网站郑州网络推广效果
  • 亲亲抱抱蹭蹭的刺激原声哔哩哔哩太原seo报价
  • 怎么棋牌网站建设什么是seo?
  • 吃什么补肾最快最好旺道seo怎么优化网站
  • 长沙做网站哪家好新冠疫情最新消息今天
  • 房地产开发公司怎么注册上海seo培训
  • 网站建设美国个人博客登录首页
  • 武汉网站设计站建设2345浏览器网站进入
  • 北京专业网站制作介绍活动策划
  • 一蓝网站建设网站设计公司怎么样
  • web浏览器阻止activex控件怎么办洛阳seo网站
  • 做门户网站广告品牌推广经典案例
  • 日本做设计的网站有哪些爱站数据官网
  • 政府网站建设管理办法网站设计公司有哪些
  • 卖模板的网站互联网广告推广公司
  • 有什么做设计的兼职网站重庆seo网站
  • 手机制作网站主页软件济南做网站公司哪家好
  • 网站改版了北京网站优化实战
  • 临夏做网站常见的网络推广方式有哪些
  • 进什么网站接模具做营销策划方案范文
  • 画册设计流程旺道seo软件技术
  • 双鱼儿 网站建设营销管理制度范本
  • 使用java做网站东莞企业网站模板建站
  • 珠海中企网站建设长沙关键词排名软件
  • 微信手机网站开发今日热点新闻事件及评论