vuejs 发出 soket.io 麻烦
vuejs emit from soket.io trouble
我正在尝试使用套接字从服务器获取数据。
但是vue不填table,因为客户端有一个数组,而服务端有returns个对象
服务器端
...
const r = require('rethinkdb');
const io = socketIO(server);
r.connect(db)
.then(conn => {
io.on('connection', (client) => {
r.table('messages')
.run(conn)
.then(cursor => {
cursor.each((err, message) => {
io.sockets.emit('messages', message);
});
});
client-vue
<template>
....
<table>
<tr>
<th>name</th>
<th>message</th>
<th>date</th>
</tr>
<tr v-for="object in objects" :key="object.id">
<td>{{object.id}}</td>
<td>{{object.name}}</td>
<td>{{object.message}}</td>
<td>{{object.date}}</td>
</tr>
</table>
...
<script>
export default {
name: 'App',
data () {
return {
objects: []
}
},
methods: {
send () {
this.$socket.on('test',message => {
this.objects = message
console.log(message)
})
}
}
在控制台中:
但是 vue 需要对象数组:
myrepo(完整代码)
https://github.com/EvgenJin/REVN_project
你应该只对数组使用 push。
this.$socket.on('test', message => {
this.objects.push(message)
})
因为在 HTML 中你需要一个对象数组。
我正在尝试使用套接字从服务器获取数据。 但是vue不填table,因为客户端有一个数组,而服务端有returns个对象
服务器端
...
const r = require('rethinkdb');
const io = socketIO(server);
r.connect(db)
.then(conn => {
io.on('connection', (client) => {
r.table('messages')
.run(conn)
.then(cursor => {
cursor.each((err, message) => {
io.sockets.emit('messages', message);
});
});
client-vue
<template>
....
<table>
<tr>
<th>name</th>
<th>message</th>
<th>date</th>
</tr>
<tr v-for="object in objects" :key="object.id">
<td>{{object.id}}</td>
<td>{{object.name}}</td>
<td>{{object.message}}</td>
<td>{{object.date}}</td>
</tr>
</table>
...
<script>
export default {
name: 'App',
data () {
return {
objects: []
}
},
methods: {
send () {
this.$socket.on('test',message => {
this.objects = message
console.log(message)
})
}
}
在控制台中:
你应该只对数组使用 push。
this.$socket.on('test', message => {
this.objects.push(message)
})
因为在 HTML 中你需要一个对象数组。