首页 > 其他分享 >VUE学习-自定义修饰符

VUE学习-自定义修饰符

时间:2022-08-23 17:12:12浏览次数:86  
标签:VUE 自定义 修饰符 value 组件 修饰 modelValue

自定义修饰符

组件

const myComponent = {
    template: `<input type="text" :value="modelValue" @input="emitValue" />`,
    props: {
        modelValue: String,
    },
    emits: ['update:modelValue'],
    methods:{
        emitValue(e) {
            let value = e.target.value
            this.$emit('update:modelValue', value)
        }
    }
}

父组件中使用

<div id="app">
    <my-component v-model="myText" />
</div>
<script>
const { createApp } = Vue
createApp({
    components: {
        myComponent,
    },
    data() {
        return {
            myText: ''
        }
    },
    watch: {},
    methods: {}
}).mount('#app')
</script>

父组件传值时添加修饰器

<my-component v-model.capitalize="myText" />

子组件接收修饰器并定义功能

props: {
    modelValue: String,
    // 接收v-model的修饰器
    modelModifiers: {
        default: () => ({})
    }
},
created() {
    // 打印v-model挂载的修饰器
    console.log(this.modelModifiers) // { capitalize: true }
},
methods:{
    emitValue(e) {
        let value = e.target.value
        // 如果v-model 挂载了 `capitalize`
        if (this.modelModifiers.capitalize) {
            // 把首位大写并拼接除首位的剩余字符串
            value = value.charAt(0).toUpperCase() + value.slice(1)
            console.log(value)
        }
        // 把处理后的字符串赋给 modelValue
        this.$emit('update:modelValue', value)
    }
}

标签:VUE,自定义,修饰符,value,组件,修饰,modelValue
From: https://www.cnblogs.com/-LemonWater-/p/16617043.html

相关文章

  • 【SpringBoot】自定义注解实现yml格式配置文件注入
    1.创建一个starter项目(非必须,主要更好分离代码)2.创建注解文件@YamlSource@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Componentpu......
  • vue自定义指令的使用
    1、背景:想通过自定义指令v-hasHelp控制页面右上角是否出现帮助按钮,点击按钮可以跳转外部链接。用自定义指令的目的是方便。2、先在自己的项目中注册使用hasHelpindex.j......
  • vue 大屏等比缩放适配方法
    大屏适配方案之一,根据设计稿尺寸,固定容器尺寸,内容完全按设计稿大小开发,可保持比例居中显示。//windowScale.jsexportfunctionuseIndex(appRef,fill){//*appRef......
  • vue3支付后不允许跳转回预付订单页
    场景:在电商项目中,订单页通常是用来展示给用户看的,当支付完成后,就不允许回退回来,防止二次支付以及商品信息错乱曾使用:router.push(`/member/pay?orderId=${res.data.resul......
  • vue路由配置和拦截
    router.beforeEach()一般用来做一些进入页面的限制。比如是否是登录状态,若没有登录,就不能进入某些页面,只有登录成功后,才有权限查看某些页面,简单地说,就是通过vue的路由来实......
  • vue大文件上传插件选哪个好?
    ​4GB以上超大文件上传和断点续传服务器的实现随着视频网站和大数据应用的普及,特别是高清视频和4K视频应用的到来,超大文件上传已经成为了日常的基础应用需求。但是在很......
  • vue项目目录结构划分
     1.dist---编译之后的项目文件2.src---开发目录3.src/assets---静态资源src/assets/less---公共lesssrc/assets/img---图片资源4.src/components---组件5.src/pag......
  • 一天一个知识点-----vue项目简单引入svg
    项目背景:vue3.0+elementPlus注意项目结构,主要涉及的几个文件及文件夹---直接上代码----1.最开始是要下载包npminstallsvg-sprite-loader2.配置项目的配置文件vu......
  • vue3 单文件组件——父组件访问子组件的实例
    如果一个子组件使用的是选项式API 或没有使用 <scriptsetup>,被引用的组件实例和该子组件的 this 完全一致,这意味着父组件对子组件的每一个属性和方法都有完全的访问......
  • vue大文件上传组件选哪个好?
    ​一、概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载时才用到......