我有main.js和app.vue文件
主js文件内部看起来像这样
var a = 1;
import App from './App.vue'
new Vue({
el: '#app',
render: h => h(App)
})
在App.vue文件中的我想要console.log(a) 返回错误a没有定义为什么?怎么了 ?
答案 0 :(得分:2)
您需要导出变量,然后将其导入到您想要的另一个文件中。最好的方法是将变量a
放在自己的模块文件中。这允许您避免使用全局变量,这几乎否定了模块的目的!
a.js:
export const a = 'foo'
App.vue:
<script>
import { a } from './a.js'
console.log(a) // foo
console.log(1)
export function log3() {
console.log(3)
}
</script>
main.js:
import { log3, default as App } from './App.vue'
console.log(2)
log3()
new Vue({
el: '#app',
render: h => h(App)
})
import { a } from './a.js'
console.log(a) // foo
以下是将记录到控制台的内容:
现在,App.vue和main.js都可以访问a
,因为他们已经明确导入了它。 App.vue可以访问a
的事实与main.js
也可以访问a
这一事实无关。
答案 1 :(得分:0)
您可以做的最简单的事情是定义data
属性insode root instance,并从组件中将它们作为this.$root.myProperty
访问:
new Vue({
el: '#app',
data: {
myGlobal: 'Hi there'
},
components: {
'child' : {
template: `<p>{{ text }}</p>`,
data: function() {
return {
text: this.$root.myGlobal
}
}
}
}
});
&#13;
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<div id="app">
<child></child>
</div>
&#13;
另一种选择 - 一个简单的插件作为中央存储:https://stackoverflow.com/a/44517332/7636961
答案 2 :(得分:-1)
App
未在main.js
组件中定义,而是直接在{{1}}中定义。
您可能想要使用global variable。 (另见this thread for global variable in vuejs)