我目前正在使用一个使用Laravel echo的简单应用程序,我确实很难使用它。这是我在app.js上的代码。该代码已经可以正常工作,当事件触发时,其他用户会收到广播。
const app = new Vue({
el: '#app',
data: {
convoId: $('meta[name="convoId"]').attr('content'),
userId : $('meta[name="userId"]').attr('content')
},
created() {
eventBus.$on('changeConvo',(data) => {
this.convoId = data.convoId;
});
if(this.convoId != undefined){
Echo.private('Convo.' + this.userId + '.' + this.convoId)
.listen('BroadcastConvo', (e) => {
document.getElementById('ChatAudio').play();
});
}
}
});
在其他一些vue组件上,我添加了一个函数,该函数使用事件总线更改app.js上convoId的值
eventBus.$emit('changeConvo',{
convoId:this.convoId
});
这也起作用。现在我的问题是这行代码
上的convoId Echo.private('Convo.' + this.userId + '.' + this.convoId)
不会更新,仍然使用它的第一个值,这就是即使convoId已经更改,我仍然在广播的原因。我应该如何更新其值,以便它现在可以使用不同的convoId收听不同的频道。或者,如果我的问题没问错,那么我现在应该如何用convoId的新值动态更改此私有频道,因为它仍然使用convoId的旧值而不是新值进行监听。
注意:为了清楚起见,convoId是对话ID。我希望你明白我的意思。谢谢:)