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

调用的子组件中使用v-model绑定数据以及使用@调用方法


实例:

子组件my-date-picker:


<!--
  * @description: 日期组件二次封装
  * 解决 “日期为区间时,后端不支持传数组,而要传#分割的字符串” 
-->
<template>
  <el-date-picker
    class="comp-my-date-picker"
    v-model="date"
    v-bind="$attrs"
    v-on="$listeners"
    :value-format="valueFormat"
    @change="change"
  ></el-date-picker>
</template>

<script>
export default {
  name: 'my-date-picker',
  model: {
    prop: 'value',
    event: 'customInput'
  },
  props: {
    /** 双向绑定值 */
    value: {
      type: [String, Array],
      default: ''
    },
    /** 当 type = daterange 时,数组拼接字符串所用的分隔符,默认# */
    separator: {
      type: String,
      default: '#'
    },
    /** 双向绑定的值是否转换成以separator分割的字符串 */
    convertToStr: {
      type: Boolean,
      default: true
    }
  },
  watch: {
    value: {
      handler(val) {
        if (val && val.split && val.split(this.separator).length === 2) {
          this.date = val.split(this.separator)
        } else {
          this.date = val
        }
      },
      immediate: true
    }
  },
  computed: {
    valueFormat() {
      return this.$attrs['value-format'] || this.$attrs.type === 'datetime' || this.$attrs.type === 'datetimerange'
        ? 'yyyy-MM-dd HH:mm:ss'
        : 'yyyy-MM-dd'
    }
  },
  data() {
    return {
      date: null
    }
  },
  created() {},
  mounted() {},
  methods: {
    change(val) {
      this.$emit('customInput', Array.isArray(val) && this.convertToStr ? val.join(this.separator) : val)
    }
  }
}
</script>
<style lang="less" scoped></style>

父组件:

 <my-date-picker
      v-model="searchData.querydate"
      type="daterange"
      start-placeholder="开始时间"
      end-placeholder="结束时间"
      @customInput="search"
   />

提示: 在子组件中使用v-bind="$attrs"  v-on="$listeners"就能够绑定子组件中的所有属性和方法,父组件调用使用它也能够直接使用它的属性和方法。

相关文章:

  • 硅基流动前端如何设置tool工具
  • Collab-Overcooked:专注于多智能体协作的语言模型基准测试平台
  • go语言逆向-符号恢复
  • VUE集成Live2d
  • python3使用selenium打开火狐并全屏
  • DeepSeek掘金——DeepSeek-R1图形界面Agent指南
  • LeetCode(必刷75题)151. 反转字符串中的单词——字符串处理
  • 双碳战略下的智慧能源实践:安科瑞储能管理系统助力企业绿色转型
  • Microk8s Ingress实现七层负载均衡
  • 【零基础到精通Java合集】第三集:流程控制与数组
  • Nerf流程
  • Google C++ 开源风格指南
  • 【零基础到精通Java合集】第二集:数据类型与运算符
  • vue3学习-2(深入组件)
  • Python入门:3.Python的输入和输出格式化
  • 部署Windows Server自带“工作文件夹”实现企业网盘功能完整步骤
  • 国产编辑器EverEdit - 快速给字符串、表达式加引号、括号的方法
  • android TabLayout设置tab的时候文字默认居中,选中文字加粗
  • 【postman】postman找回接口数据
  • Linux中jdk-8u291-linux-x64 中jdk工具包
  • 海外市场,押注中国无人驾驶龙头
  • 新华每日电讯:博物馆正以可亲可近替代“高冷范儿”
  • 上海比常年平均时间提前12天入夏,明天最高气温可达33℃
  • 广西壮族自治区政府主席蓝天立任上被查
  • “AD365特应性皮炎疾病教育项目”启动,助力提升认知与规范诊疗
  • 苏轼“胡为适南海”?