• Vue3 vmodel自定义修饰符


     
    inputcmp.vue (script setup方式):
     
    <template>
      <span>{{ msg }}</span>
      <input type="text" :value="modelValue || zs" @input="inputemit" @blur="bluremit" />
    </template>
     
    <script setup>
    let props = defineProps({
      // 带有参数自定义修饰符(args+Modifiers)
      zs: String,
      zsModifiers: {},
      // 自定义修饰符,不带参数(modelModifiers)
      modelValue: String,
      modelModifiers: {
        default: () => ({}),
      },
      msg: {
        type: String,
        default: '输入:'
      }
    })
    let emit = defineEmits(['update:modelValue', 'update:zs'])
    // 变成大写
    function inputemit (e) {
      let value = e.target.value;
      if (props.modelModifiers && props.modelModifiers.upperCase) {
        value = value.toUpperCase();
        emit("update:modelValue", value);
      }
    }
    // 变成大写且加上zs前缀
    function bluremit (e) {
      let value = e.target.value;
      if (props.zsModifiers && props.zsModifiers.hasPre) {
        value = 'zs-' + value.toUpperCase();
        emit("update:zs", value);
      }
    }
    </script>
     
    inputcmp.vue (script 方式):
     
    <template>
      <input type="text" :value="modelValue || zs" @input="inputemit" @blur="bluremit" />
    </template>
     
    <script >
    export default {
      props: {
        // 带有参数自定义修饰符(args+Modifiers)
        zs: String,
        zsModifiers: {},
        // 自定义修饰符,不带参数(modelModifiers)
        modelValue: String,
        modelModifiers: {
          default: () => ({}),
        },
      },
      methods: {
        // 变成大写
        inputemit (e) {
          let value = e.target.value;
          if (this.modelModifiers && this.modelModifiers.upperCase) {
            value = value.toUpperCase();
            this.$emit("update:modelValue", value);
          }
        },
        // 变成大写且加上zs前缀
        bluremit (e) {
          let value = e.target.value;
          if (this.zsModifiers && this.zsModifiers.hasPre) {
            value = 'zs-' + value.toUpperCase();
            this.$emit("update:zs", value);
          }
        }
      },
    };
    </script>
     
     
    index.vue:
     
    <template>
      <v-inputcmp v-model.upperCase="inpvalue1" />
      <br />
      <v-inputcmp v-model:zs.hasPre="inpvalue2" :msg="msg" />
    </template>
     
    <script setup>
    import { ref } from 'vue'
    import vInputcmp from './inputcmp.vue'
    let inpvalue1 = ref('abc');
    let inpvalue2 = ref('zs');
    let zs = ref('zs')
    </script>
    <style></style>
     
     
     
     
     
     
     
     
  • 相关阅读:
    代码中日志的使用
    MySQL数据库(3)----设置和使用自定义变量
    MySQL数据库(2)----检索信息
    MySQL数据库(1)----入门级操作
    Apache服务器运维笔记(6)----目录 文件 网络容器的安全问题
    Apache服务器运维笔记(5)----容器的处理顺序
    CentOS7 下安装 SublimeText3
    Apache服务器运维笔记(4)----服务器扩展部分
    Apache服务器运维笔记(3)----容器部分
    KMP算法的一个简单实现
  • 原文地址:https://www.cnblogs.com/shidawang/p/15955057.html
Copyright © 2020-2023  润新知