Vue- v-model 表单 数据双向绑定($emit)

参考文献
vue官网https://cn.vuejs.org/v2/guide/forms.html
- 掘金 axios拦截器 -https://juejin.im/post/59a22e71518825242c422604
个人博客主介绍 vuehttps://www.tangshuang.net/3512.html#title-7-6-3
v-model 使用方法https://www.cnblogs.com/attacking-cabbage/p/10260393.html
- $emit 父子组件传值 -https://www.jianshu.com/p/4cb9353d17dd

可以认真反复阅读:

一、v-model:

v-model是一个指令,限制在 input、select、textarea、components 中使用。

Vue 的父子组件通讯模式,父组件通过 props 把数据传递到子组件 (父传子),通过 v-bind: 来动态绑定props的值,子组件修改了数据后把改变通过 $emit 事件 的方式通知父组件 (子传父),所以说组件上的 v-model 也是一种语法糖。

官网方法:
在这里插入图片描述
v-model只不过是一个语法糖而已,真正的实现靠的还是 :

  • v-bind:绑定响应式数据;
  • 触发 input 事件 并传递数据 (重点)

v-bind与v-model区别:
< input :value=“name” v-model=“body”>

  • v-bind 产生的效果不含有双向绑定,所以 :value 的效果就是让 input的value属性值等于 data.name 的值;
  • v-model 的效果是使input和 data.body 建立双向绑定,因此首先 data.body 的值会给input的value属性,其次,当input中输入的值发生变化的时候,data.body 还会跟着改变;

自动监听 input 事件,并把这个input事件所携带的值 传递给v-model所绑定的属性!这样组件内部的值就给到了父组件了。
监听原生组件的事件,当获取到原生组件的值后把 值通过 调用 this.$emit(‘input’ ,data) 方法 去触发 input事件


关于$emit 的用法:

  • 父组件可以使用 props 把数据传给子组件。
  • 子组件可以使用 $emit 触发父组件的自定义事件。
  • $emit() 方法的 第一个参数是自定义事件的名称。
  • 例子:
子组件:

<template>  
  <div class="train-city">  
    <span @click='select("大连")'>大连</span>  
  </div>  
</template>  
<script>  
export default {  
  name:'trainCity',  
  methods:{  
    select(val) {  
      let data = {  
        cityname: val  
      };  
      this.$emit('showCityName',data); //select事件触发后,自动触发showCityName事件  
    }  
  }  
}  
</script>  

父组件:

<template>  
	<!-- //监听子组件的showCityName事件。  -->
    <trainCity @showCityName="updateCity" :index="goOrtoCity"></trainCity> 
<template>  
<script>  
export default {  
  name:'index',  
  data () {  
   return {  
      toCity:"北京"  
    }  
  }  
  methods:{  
    //触发子组件城市选择-选择城市的事件
    updateCity(data){    
      this.toCity = data.cityname;  //子组件改变了父组件的值  
      console.log('toCity:'+this.toCity)   //打印当前data中 toCity 的值
    }  
  }  
}  
</script>  

在这里插入图片描述


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
v-modelVue.js的一个核心功能,用于实现数据双向绑定。通过v-model指令,我们可以将一个表单元素的值与Vue实例中的数据属性进行绑定,实现数据的自动同步更新。当表单元素的值发生变化时,Vue会自动更新数据属性的值;反过来,当数据属性的值发生变化时,表单元素的值也会自动更新。这种双向绑定的机制,大大简化了表单操作的代码编写,提高了开发效率。 在你提供的代码例子中,父组件通过v-model将tabType变量传递给子组件YwtgTabs,并实现了双向绑定。通过props属性,子组件声明了一个名为type的属性,用于接收父组件传递过来的tabType变量。同时,在子组件中通过model属性,定义了一个名为changeType的事件,该事件用于触发更新type属性的值。当子组件中的selectTab方法被调用时,通过使用$emit方法触发changeType事件,并传递item.key作为参数,从而更新type属性的值。由于type属性与tabType变量通过双向绑定关联起来,当type属性的值改变时,tabType变量的值也会相应地更新。 综上所述,通过v-model指令可以实现表单数据双向绑定,大大简化了表单操作的代码编写,提高了开发效率。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [vue自定v-model实现表单数据双向绑定问题](https://download.csdn.net/download/weixin_38575118/12953038)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [vue的v-model实现双向绑定](https://blog.csdn.net/ta_huang/article/details/121953421)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值