vue.js学习笔记(六)--利用v-model实现父子组件间的双向通信

来源:互联网 发布:淘宝售后可以申请几次 编辑:程序博客网 时间:2024/06/08 02:21

博客:https://fisher-zh.github.io/

在Vue中,我们可以使用prop属性来进行父子组件间的通信,在之前的文章Vue踩坑之路–父子组件通信总结中有介绍过。

但是prop 是单向绑定的,我们无法在组件中直接修改prop传递的属性。

prop 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是不会反过来。这是为了防止子组件无意修改了父组件的状态——这会让应用的数据流难以理解。
另外,每次父组件更新时,子组件的所有 prop 都会更新为最新值。这意味着你不应该在子组件内部改变 prop。如果你这么做了,Vue 会在控制台给出警告。官方文档解释

当然我们可以通过emit在子组件中触发某些事件从而在父组件中修改该数据,这种方法肯定不是最理想的。

在Vue中,能够进行数据双向绑定的属性,我们应该最先想到的是v-model,绑定input的value值,当我们修改value值的同时能够改变数据。那么我们能不能利用v-model这一特点来实现父子组件间某些数据的双向绑定呢?
当然能! 要不我写这个干什么(逃…)

<div>  <child v-model="message"></child>  <!-- 通过v-model将message绑定在child上 --></div>
// 子组件export default {  name: '',  props: {    // 通过value获取绑定message值    value: {      type: String,      default: ''    }  },  data: {    // 你的数据  },  methods: {    changeMessage() {      // 通过触发组件的input事件改变message的值,      // 此时父组件中的message值就改变为你设置的值了      this.$emit('input', 'your message value')    }  }})
原创粉丝点击