【发布时间】:2018-07-02 04:32:28
【问题描述】:
我正在尝试在具有类似结构的组件之间进行通信
<div id=chat-box>
<div class="wrapper">
<div>
<chat-header></chat-header>
<message-container :chat="chat"></message-container>
<chat-compose @clicked="onClickChild"></chat-compose>
</div>
</div>
父母
methods: {
onClickChild (value) {
console.log('in top parent');
this.chat = value;
},
孩子 1
methods: {
startChat: function(event) {
this.$emit('clicked', new chat({
type: 'user',
message: this.input_value,
button: 'user',
metaInfo: 'user',
isBot: false,
}))
},
},
孩子 2
导出默认{ 名称:'消息容器', 道具:['聊天'],
data: function() {
return {
chatSession: [],
}
},
method : {
updateData : function() {
console.log('called updatedata');
}
},
created: function () {
console.log(this.chat)
},
mounted: function () {
console.log(this.chat)
},
updated: function() {
console.log(this.chat)
}
}
这里的 clickChild 方法正在发出父方法,它正在更新聊天对象,但消息容器组件没有获得更新的值,它显示默认的初始化值,甚至在我尝试创建、安装和更新的方法的数据更改上也没有再次呈现为了获得更新的值,这些方法在应用程序初始化时只调用一次,永远不会在数据更改时再次调用
基本上这里有三个组件,一个是父级,另外两个是子级,因此一个子级正在更新聊天对象并发送给父级和父级,将相同的更新后的子级传递给另一个子级,但另一个子级没有重新渲染或获取更新价值 所以请帮助我做错了还是有其他方法可以实现它。
【问题讨论】:
-
您是否将
chat定义为父组件上的数据属性? -
@是我定义的
标签: javascript security vue.js