美文网首页
vue3 v-model及多个v-model 实现 自定义修饰符

vue3 v-model及多个v-model 实现 自定义修饰符

作者: 0说 | 来源:发表于2024-02-28 09:57 被阅读0次

    父级组件

    <template>
      <div class="num" @click="changeNum">父级改变{{ num }}</div>
      <!--                          修饰符 -->
      <ModelDemo v-model:textValue.isEmpty="textValue" v-model="num"></ModelDemo>
      <div>textValue - {{ textValue }}</div>
    </template>
    <script lang="ts" setup>
    import ModelDemo from './ModelDemo.vue'
    const num = ref<number>(10)
    const textValue = ref('666')
    const changeNum = () => {
      num.value ++
    }
    </script>
    

    子级组件

    <template>
      <div>
        <div>
            <span>子组件改变v-model{{ modelValue }}</span><el-input-number v-model="value"  @input="inputFn"></el-input-number>
        </div>
        <div>
          <span>子组件改变textInput</span>
          <el-input v-model="tValue"  @input="tValueFn"></el-input>
        </div>
      </div>
    </template>
    <script lang="ts" setup>
    // 直接在 defineProps 泛型里定义
    const props = defineProps<{
      modelValue: number,
      textValue: string,
      textValueModifiers?: { // 绑定哪个固定在哪个后面加Modifiers
        isEmpty: boolean
      }
    }>()
    
    const $emit = defineEmits(['update:modelValue', 'update:textValue'])
    const value = ref<number>(0)
    const inputFn = (val: number) => {
      console.log(val)
      $emit('update:modelValue', val)
    }
    
    const tValue = ref<string>('')
    const tValueFn = (val: string) => {
      console.log(val)
      $emit('update:textValue', props.textValueModifiers?.isEmpty && !val && '现在input框为空哦' || val)
    }
    </script>
    

    相关文章

      网友评论

          本文标题:vue3 v-model及多个v-model 实现 自定义修饰符

          本文链接:https://www.haomeiwen.com/subject/lhnxzdtx.html