vue-----$emit(update:prop,'''newPropValue')
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue-----$emit(update:prop,'''newPropValue')相关的知识,希望对你有一定的参考价值。
参考技术A .sync修饰符情况:可能需要对一个prop进行双向绑定,真正的双向绑定会带来维护上的问题,因为子组件可以变更父组件,且在父组件和子组件没有明显的变更来源。vue官方推荐以update:myPropName的模式触发事件来解决该问题
子组件通知父组件更新属性,并传入新值
例如:
注意带有 .sync 修饰符的 v-bind 不能 和表达式一起使用 (例如 v-bind:title.sync=”doc.title + ‘!’” 是无效的)。取而代之的是,你只能提供你想要绑定的 property 名,类似 v-model。
当我们用一个对象同时设置多个 prop 的时候,也可以将这个 .sync 修饰符和 v-bind 配合使用:
这样会把 doc 对象中的每一个 property (如 title) 都作为一个独立的 prop 传进去,然后各自添加用于更新的 v-on 监听器。
将 v-bind.sync 用在一个字面量的对象上,例如 v-bind.sync=” title: doc.title ”,是无法正常工作的,因为在解析一个像这样的复杂表达式的时候,有很多边缘情况需要考虑。
vue 父子组件数据的双向绑定大法
官方文档说明
- 所有的 prop 都使得其父子 prop 之间形成了一个 单向下行绑定
- 父级 prop 的更新会向下流动到子组件中,但是反过来则不行
- 2.3.0+ 新增
.sync
修饰符 - 以
update:my-prop-name
的模式触发事件实现 上行绑定 最终实现 双向绑定
举个栗子this.$emit(‘update:title‘, newTitle)
代码实现
child.vue
<template> <div> <input type="text" v-model="sonValue"> <div> fatherValue </div> </div> </template> <script> export default props: fatherValue: required: true , data () return sonValue: this.fatherValue , watch: sonValue (newValue, oldvalue) this.$emit(‘update:fatherValue‘, newValue) , fatherValue (newValue) this.sonValue = newValue </script>
father.vue
<template> <div class="hello"> <!-- input实时改变value的值, 并且会实时改变child里的内容 --> <input type="text" v-model="value"> <child :fatherValue.sync="value" ></child> </div> </template> <script> import Child from ‘./Child‘ //引入Child子组件 export default data() return value: ‘‘ , components: ‘child‘: Child </script>
以上是关于vue-----$emit(update:prop,'''newPropValue')的主要内容,如果未能解决你的问题,请参考以下文章