您的位置:首页 > 产品设计 > UI/UE

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

2017-08-05 15:47 627 查看
博客: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')
}
}
})
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息