Vue.js 为什么vue手表只触发一次?

Vue.js 为什么vue手表只触发一次?,vue.js,Vue.js,为什么手表只触发一次?正如下面的代码,当单击“同步”按钮时,id和文本同时更改,但只有id()手表被触发,需要再次单击“同步”按钮触发文本()手表,为什么 Vue.component('test-bar'){ 道具:['id','text'], 模板:` 子项:{{id}{{text} 同步 `, 观察:{ id(){ this.$emit('update:id',this.id) //这个.emit('update:text',this.text)/!!!注意这里。只有当我添加这一行时才会触

为什么手表只触发一次?正如下面的代码,当单击“同步”按钮时,id和文本同时更改,但只有id()手表被触发,需要再次单击“同步”按钮触发文本()手表,为什么

Vue.component('test-bar'){
道具:['id','text'],
模板:`
子项:{{id}{{text}
同步
`,
观察:{
id(){
this.$emit('update:id',this.id)
//这个.emit('update:text',this.text)/!!!注意这里。只有当我添加这一行时才会触发text()监视
},
正文(){
this.$emit('update:text',this.text)
}
},
方法:{
点击(){
此参数为0.id=1
this.text='子文本'
}
}
})
新Vue({
el:“应用程序”,
数据:{
id:0,
文本:“父文本”,
}
})

父项:{{id}}{{text}

您不应该更新
道具。当尝试更新道具时,Vue将抛出一个错误,您的流程将中断。因此,在这一行
this.id=1
之后,将抛出一个异常,下一行将不会执行。正确的方法是使用带有getter和setter的

类似于此:

Vue.component('test-bar'){
道具:['id','text'],
模板:`
子项:{{childId}{{childText}
同步
`,
计算:{
孩子:{
得到(){
把这个还给我
},
设置(值){
此.$emit('update:id',value)
}
},
儿童文本:{
得到(){
返回此.text
},
设置(值){
此.$emit('update:text',value)
}
}
},
方法:{
点击(){
this.childId=1
this.childText='child text'
}
}
})
这里有一个JSFIDLE正在工作

一种更简单的方法是只发出事件,而不监视更改

on_click() {
  this.$emit('update:id', 1)
  this.$emit('update:text', 'child text')
}

jshiddle

非常感谢您!解决了我的问题。