【发布时间】:2017-09-12 14:24:12
【问题描述】:
这是我在main.js中的代码
import Vue from 'vue'
import App from './App'
import VueRouter from 'vue-router'
import vueResource from 'vue-resource'
// import {bus } from './bus.js'
// import MainContent from './components/MainContent'
export const bus = new Vue();
Vue.config.productionTip = true
Vue.use(vueResource)
Vue.use(VueRouter)
const router = new VueRouter({
mode: 'history',
base: __dirname,
routes: [
// {path:'/',component: MainContent }
]
})
/* eslint-disable no-new */
new Vue({
el: '#app',
template: '<App/>',
components: { App }
})
// const bus = require('./bus.js');
var newData = new Vue({
el: '#graph-content',
data: {
graphD:'',
title: 'test title'
},
methods: {
fetchData: function (data) {
this.graphD = data;
console.log('Inside', this.graphD);
}
},
created: function () {
bus.$on('graphdata', this.fetchData);
}
})
console.log('OutSide', newData._data.graphD)
这是从 app.vue 发出的总线数据
bus.$emit('graphdata', "test bus");
我正在尝试使用以下代码从 app.vue 获取数据。我在 fetchData 范围内获取数据,但我没有从 newData 范围之外获取数据。
谁能建议我将数据/对象从app.vue 传递到main.js 文件的问题或可能的解决方案在哪里。
****更新 ***** 应用程序.vue
<template>
<div>
<app-header> </app-header>
<app-maincontent></app-maincontent>
</div>
</template>
<script>
import Header from './components/Header.vue'
import SideNav from './components/SideNav.vue'
import MainContent from './components/MainContent.vue'
import GraphA from './components/GraphA.vue'
import {bus} from './main.js'
var apiURL = 'http://localhost:3000/db';
export default {
components: {
'app-header': Header,
'app-sidenav': SideNav,
'app-maincontent': MainContent,
'app-grapha': GraphA
},
data () {
return {
users:[]
}
},
methods: {
fetchData: function () {
var self = this;
$.get( apiURL, function( data ) {
self.users = data;
// console.log(data);
bus.$emit('graphdata', "test bus");
});
}
},
created: function (){
this.fetchData();
}
}
</script>
<style>
</style>
【问题讨论】:
-
添加完整的 app.vue 文件代码。您是否正在创建两个 vue 实例并保持一个总线实例单独的 vue 实例。你是如何实现
bus的? -
我更新了文件。你能检查一下吗!谢谢
标签: javascript vuejs2 vue-component event-bus