首页 > 其他分享 >Vue2基础知识:v-model在组件传值中的使用,表单组件如何封装,如何用v-model简化父传子,子传父。(本文章只适用于vue2,vue3环境不一样语法不同)

Vue2基础知识:v-model在组件传值中的使用,表单组件如何封装,如何用v-model简化父传子,子传父。(本文章只适用于vue2,vue3环境不一样语法不同)

时间:2024-06-09 22:31:15浏览次数:21  
标签:子传父 绑定 value 组件 input model

要想要了解v-model在组件传值中如何使用首先得先了解表单组件如何封装

数据在父组件那里,表单结构在子组件那里。

1.表单组件如何封装

1.父传子:数据 应该是父组件props传递过来的,v-model拆解绑定数据。(为什么说是拆解呢?因为不可以直接v-model绑定,子组件只能改变自己的值,不能改变父组件的值)

2.子传父:监听输入,子传值给父组件修改。

下面通过代码进行具体演示:

1.完成父传子,

注意:子组件绑定的时候不能用v-model,子组件只能改变自己的值,不能改变父组件的值,而v-model会修改父组件的值,会报错。

完成父传子时的效果:

2.完成子传父

完成子传父时的效果:

2.在父组件v-model简化代码,实现子组件和父组件数据双向绑定。

步骤:分为两步:

1.子组件中:props通过value接收,事迹触发input(注意value和input都是固定的,不能改变)

2.父组件中:v-model给组件直接绑定数据(v-model=:value+@input)

下面进行代码演示:

完成简化后的效果:

3.最后附上代码:

App.vue(父组件)

<template>
  <div class="app">


    <!-- <BaseSelect :cityId="selectId"
    @changeId="selectId=$event"></BaseSelect> -->


    <!-- 上面是原先的代码 -->
    <BaseSelect v-model="selectId"></BaseSelect>
    <!-- v-model等价与:value和@input -->
  </div>
</template>

<script>
import BaseSelect from './components/BaseSelect.vue'
export default {
  data() {
    return {
      selectId: '103',
    }
  },
  components: {
    BaseSelect,
  },
}
</script>

<style>
</style>

BaseSelect.vue(子组件)

<template>
  <div>
    <select :value="value" @change="handleChange">
      <option value="101">北京</option>
      <option value="102">上海</option>
      <option value="103">武汉</option>
      <option value="104">广州</option>
      <option value="105">深圳</option>
    </select>
  </div>
</template>

<script>
export default {
  props:{
    // 这里就必须是value
    // cityId:String
    // 上面是原先的代码
    value:String
  },
  methods:{
    handleChange(e){
      // console.log(e.target.value)
      //下面开始子传父
      // this.$emit('changeId',e.target.value)
      this.$emit('input',e.target.value)

    }
  }
}
</script>

<style>
</style>

标签:子传父,绑定,value,组件,input,model
From: https://blog.csdn.net/zxn275266/article/details/139565816

相关文章

  • 6、组件通信详解(父子、兄弟、祖孙)
    一、父传子1、props用法:(1)父组件用props绑定数据,表示为v-bind:props="数据"(v-bind:简写为:,props可以任意命名)(2)子组件用defineProps(['props',....])接收注意:(1)v-bind:c="数据"表示父组件给数据绑定了一个名为c的prop属性。这样当父组件的数据发生改变,子组件也能接收......
  • RocketMQ教程(三):RocketMQ的核心组件
    四个核心组件RocketMQ的架构采用了典型的分布式系统设计理念,以确保高性能、高可用和可扩展性。RocketMQ主要由四个核心组件构成:NameServer、Broker、Producer和Consumer。下面是对这些组件以及它们在RocketMQ中的角色和功能的概述:1.NameServer角色和功能:NameServer......
  • python后端结合uniapp与uview组件tabs,实现自定义导航按钮与小标签颜色控制
    实现效果(红框内):后端api如下:@task_api.route('/user/task/states_list',methods=['POST','GET'])@visitor_token_requireddeftask_states(user):name_list=['待接单','设计中','交付中','已完成','......
  • HarmonyOS ArkTS组件 | Flex 以弹性方式布局子组件的容器组件 学习记录
    HarmonyOSArkTS组件|Flex以弹性方式布局子组件的容器组件学习记录前言:最近需要用到弹性布局,记录一下。(忽略图片水印QAQ)说明:Flex组件在渲染时存在二次布局过程,因此在对性能有严格要求的场景下建议使用Column、Row代替。Flex组件主轴默认不设置时撑满父容器,Column、Row组......
  • Vue3中的常见组件通信之`$refs`、`$parent`
    Vue3中的常见组件通信之$refs、$parent概述​在vue3中常见的组件通信有props、mitt、v-model、refs、......
  • Vue 3 的 <teleport> 组件封装为自定义指令
    <Teleport>是一个内置组件,它可以将一个组件内部的一部分模板“传送”到该组件的DOM结构外层的位置去。https://cn.vuejs.org/guide/built-ins/teleport.html为了更加简便灵活,可以将Vue3的<teleport>组件类似的功能封装为自定义指令。当然,但在某些情况下,直接使用<telepo......
  • GLaMM : Pixel Grounding Large Multimodal Model
    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! Abstract大型多模态模型(LMM)将大语言模型扩展到视觉领域。最初的LMM使用整体图像和文本提示词来生成无定位的文本响应。最近,区域级LMM已被用于生成视觉定位响应。然而,它们仅限于一次仅引用单个目标类别,要求用户指定......
  • web 项目开发又多一个选择!华为出品的跨端、跨框架的 UI 组件库,有点强(带私活源码)
     前言在华为开发者大会2023上,官方正式进行发布了OpenTiny,这是华为云出品的企业级设计体系统,一套前端UI组件库。适配PC端/移动端等多端,完成度很高。至此,web项目开发又多一个选择。OpenTiny,同时支持Vue2/Vue3/Angular,拥有主题配置系统/中后台模板/CLI命令......
  • 在npm发布自己的组件包
    目录前言正文npm和git的对比Node环境的配置具体发布步骤※※需要注意的是尾声 ......
  • Android Media Framework(四)Non-Tunneled组件的状态转换与buffer分配过程分析
    本篇将继续深入OpenMAXILSpec,详细解析Non-tunneled(非隧道)组件的初始化、数据传递以及组件销毁过程。通过阅读本篇内容,我们应能对Non-tunneled组件的buffer分配与状态转换过程有一个清晰的了解。1、组件初始化以下是ILSpec给的Non-tunneled组件初始化时序图:ILClient首先......