在书写逻辑之前,先厘清程序要达成的需求是什麽?
login-wrapper
是登入组件用的,chat-wrapper
则是讯息列表组件,使用 isShow
作为变数来切换判断。
当然,玩家登入时输入的名称,也必须使用 v-model 来双向绑定,同时进入时则触发对应的函式。
<div id="app">
// login component
<div v-if="isShow" class="login-wrapper">
<input v-model="username" class="login-input" type="text" />
<button @click="logingChat()">Go Chat</button>
</div>
// chat component
<div v-else class="chat-wrapper">
<h2>Hello : {{ username }}</h2>
<div>
<input v-model="message" class="input-message" type="text" />
<button type="button" class="send-btn" @click="sendMessage()">
Send Message
</button>
<ul class="message-wrapper">
<li v-for="(item, index) in list" :key="index + item">
{{ item }}
</li>
</ul>
</div>
</div>
</div>
data 需要放入上面谈到的变数
data: {
// ...
username: '',
isShow: true,
},
当玩家输入名称後,点击触发登入的函式,先做第一步检查,避免玩家在未输入名称的状况下也进行登入。
接着,再给 server-side 送出资料时的格式,添加一个事件,进行判断这是登入的资料还是送出讯息的资料,并使用 JSON.stringify()
来处理。
methods: {
logingChat() {
if (this.username.trim() === '') {
alert('请输入姓名');
return;
}
this.isShow = false;
this.ws.send(
JSON.stringify({
event: 'login',
message: this.username,
})
);
},
sendMessage() {
this.list.push(this.message);
this.ws.send(
JSON.stringify({
event: 'message',
message: this.message,
})
);
this.message = '';
},
}
至於监听讯息的部分,因为需要显示出每个玩家登入时的讯息,所以也透过事件判断来显示。
onMessage(event) {
let obj = JSON.parse(event.data);
if (obj.event === 'login') {
this.list.push(`Welcome ${obj.message} enter chat!`);
} else {
this.list.push(obj.message);
}
},
<<: Day24 - this&Object Prototypes Ch3 Objects - Review
>>: Day24 - 如何盘中计算技术指标且发送讯号到line: 不同频率分K计算
这次要用所做过的范例来说明,首先,基本的设计画面就不多说了! 设计出後第一页会长这样 按下新增联络人...
建立自己的函数与类别模组,两者应用都差不多,所以一起讲 先建立自己的函数与类别 导入模组 结果 随...
哈罗~ 大家好 相信看到标题的人应该都很困惑 这什麽名字啦~ 嘿 没错~ 这其实是我们的队名XD 好...
前言: 学习kotlin语法,可以使用线上的编译器,也可以用官方的开发工具 IntelliJ IDE...
Transition 使用 昨天讲到元素的变形,而今天的 Transition 就是使用在元素改变时...