- vue通信为单向传输,所以在父组件传递给子组件参数时,子组件不可随意去更改prop中的值
- 通常做法:可通过自定义事件,通知父组件修改值:
<model :text="text" @update="text=$event"></model>
props: {
text: {
type: String,
default: ""
}
},
this.$emit('update',new Date().getTime())
- 通过.sync来修改,可理解成,将参数传递进去,并且开始自动监听变化(简化代码):
- 如在组件上绑定text.sync会被扩展为:组件绑定了text属性同时绑定了 @update:text 事件
<model :text.sync="text"></model>
this.$emit('update:text',new Date().getTime())
- 使用v-bind可直接绑定对象,对对象进行解构赋值
obj:{
content:"",
title:""
}
<model v-bind.sync="obj"></model>
export default {
props: {
content: {
type: String,
default: ""
},
title: {
type: String,
default: ""
},
},
methods:{
changeText(){
this.$emit('update:content',new Date().getTime())
this.$emit('update:title',new Date().getTime())
}
}
}