html
<div id="app">
<form @submit.prevent="submitMsg">
<input id="m" autocomplete="off" v-model="inputMsg"/>
<button type="submit">Send</button>
<span>
<ul>
<li v-for="message in messages">{{message}}</li>
</ul>
</span>
</form>
</div>
剧本
var app = new Vue({
el: '#app',
data: {
socket: null,
inputMsg: '',
messages: []
},
created: function() {
this.socket = io();
this.socket.on('chat message', function(msg) {
this.messages.push(msg);
}.bind(this));
},
methods:{
submitMsg(){
this.socket.emit('chat message', this.inputMsg);
this.inputMsg = '';
}
}
});
发生了什么
-
id='app'
因此它由vue控制
-
使用在表单上添加提交事件
@submit.prevent
submitMsg
. 这个
prevent
-
v-model
关于双向数据输入
-
V-模型
inputMsg
获取输入值并在表单提交方法中使用
-
在发出套接字事件后,使用将输入值设置为空
this.inputMsg = '';
-
在板条箱生命周期挂钩设置中,设置套接字事件侦听器并将消息推送到数据属性
messages:[]
初始化为空数组
-
通过
messages[]
在模板中使用
v-for='message in messages'
<li>
中每个项目的元素