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

原创 2017年08月05日 15:47:03

博客: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')
    }
  }
})
版权声明:本文为博主原创文章,转载请注明出处。

相关文章推荐

webpack超详细配置, 使用教程(图文)

博主在这里就不详细介绍webpack来源以及作用了, 本篇博文面向新手主要说明如何配置webpack, 以及webpack的使用方法, 直到创建出一个合理的属于自己webpack项目.流程webpa...
  • c_kite
  • c_kite
  • 2017年05月06日 19:22
  • 17492

ReactJS学习笔记(三)-父子组件间的通信

过去、现在、未来的每一天,组成了我们的故事。认真对待,都是美好的。 React组件间的通信分为三种情况:1、子组件调用父组件,采用props的方式进行调用和赋值,在父组件中设置相关属性值或者方法,子组...

利用Vue v-model实现一个自定义的表单组件

上一篇文章  vue v-model实现原理和组件设计 ,我们讲到了,v-model的基本实现原理,这次我们来利用 v-model来实现一个简单的 表单组件 功能描述: 通过点击按钮,可以增减购物数量...

vue.js v-model数据双向绑定实例

vue.js的一大功能便是实现数据的双向绑定,本文就表单处理时运用v-model指令实现双向绑定做一个介绍: v-model这个指令只能用在, ,这些表单元素上,所谓双向绑定,指的就是我们在js...
  • nuli888
  • nuli888
  • 2017年04月28日 17:09
  • 1349

Vue.js之视图和数据的双向绑定(v-model)

1、使用v-model指令,使得视图和数据实现双向绑定。v-model主要用在表单的input输入框,完成视图和数据的双向绑定。 2、JavaScript代码 window.onloa...

父子组件通信vue.js

子组件可以用 this.$parent 访问它的父组件。根实例的后代可以用 this.$root 访问它。父组件有一个数组 this.$children,包含它所有的子元素。 简单实例展示: ...

vue.js父子组件通信动态绑定

Vue2--非父子组件通信笔记

核心要点: var Event=new Vue(); Event.$emit(事件名称, 数据) Event.$on(事件名称,function(data){ //data }.bi...

vue.js实战笔记:父子组件之间的那些事儿

子组件和父组件传递数据父组件向子组件传递数据: 栗子1:父组件A向子组件A-1传递参数:currStudentId,有两种传递方式:第一种传递方式,是使用静态传递方式,打个比方A-1组件中,需要的是...
  • sunhuwh
  • sunhuwh
  • 2017年08月09日 13:49
  • 204
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:vue.js学习笔记(六)--利用v-model实现父子组件间的双向通信
举报原因:
原因补充:

(最多只允许输入30个字)