Я создавал веб-приложение с использованием Vue 2.0 и отдельных файловых компонентов и столкнулся с проблемой, которую не могу понять и которую нужно решить.
В настоящее время моя соответствующая файловая структура выглядит следующим образом...
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)
})
сокеты.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')
я в настоящее время получаю ошибку типа undefined function
для App.$set
. Я также пробовал глобальный API, используя Vue.set(App, 'test', payload)
, который также не работал.
Любая помощь будет принята с благодарностью!
РЕДАКТИРОВАТЬ
Другими словами, как я могу манипулировать объектом data
одного компонента файла из другого файла JS после его импорта?