【发布时间】:2016-10-04 14:07:32
【问题描述】:
我一直在使用 Vue 2.0 和单文件组件构建 Web 应用程序,遇到了一个我无法弄清楚但需要解决的问题。
就目前而言,我的相关文件结构如下...
main.js
/*
* main.js
*
* Initial entry point for all Vue and component code
*/
import Vue from 'vue'
import VueResource from 'vue-resource'
import App from './App.vue'
import './sockets.js'
Vue.use(VueResource)
new Vue({
el: '#app',
render: element => element(App)
})
sockets.js
import App from './App.vue'
const socket = io('http://localhost:8181')
socket.on('test', payload => App.$set('test', payload))
/*socket.on('lot_change', payload => {
console.log(payload)
//Logic to find differences and reset
})*/
App.vue
<template>
<div id="app">
{{ test }}
<template v-for="lot in allLots">
<lot
:uuid="lot.uuid"
:closed="lot.closed"
:controllerId="lot.controllerId"
:institution="lot.institution"
:number="lot.lotNumber"
:permits="lot.permits"
:taken-spaces="lot.takenSpaces"
:total-spaces="lot.totalSpaces"></lot>
</template>
</div>
</template>
<script>
import Lot from './components/Lot.vue'
export default {
data() {
return {
allLots: [],
test: {}
}
},
components: {
Lot
},
created() {
this.$http.get('/all').then(res => JSON.parse(res.body)).then(data => {
this.allLots = data.results
})
}
}
</script>
<style>
html, body {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
</style>
在一个新连接上,我的express 应用程序向套接字发出一个'test' 事件,客户端套接字完全可以接收该事件,但是,我想要做的是来自后端套接字发射的有效负载并将其分配给App组件的数据。
在socket.on('test') 的回调中,我目前收到App.$set 的undefined function 类型的错误。我也尝试过使用 Vue.set(App, 'test', payload) 的全局 API,但也没有用。
任何帮助将不胜感激!
编辑
也就是说,导入后如何从另一个JS文件中操作单个文件组件的data对象?
【问题讨论】:
标签: socket.io vue.js vue-component