我有一个名为Profile.vue的页面,其结构是这样的,
<style>
</style>
<template>
<component-1></component-1>
<component-2></component-3>
<component-3></component-3>
</template>
<script>
import component1 from '...../..'
import component2 from '...../..'
import component3 from '...../..'
export default {
name: 'profile',
data(){
return{
pagename: 'Profile',
mydata: 'This is my data'
}
}
}
</script>
如何使数据在 mydata 中可用,到我正在导入的所有组件,即,如何将可用于所有组件的数据传递?
你可以使用道具。
<component-1 v-bind:message="mydata"></component-1>
然后在您的子组件中(直接从文档中(:
Vue.component('component-1', {
// declare the props
props: ['message'],
// just like data, the prop can be used inside templates
// and is also made available in the vm as this.message
template: '<span>{{ message }}</span>'
})
与其使用props(这可能意味着你必须经常传递这些 props(,不如使用 $parent(或$root(访问变量
Vue.component('component-1', {
computed: {
message: function(){
// this is how to access the variable inside the component code
return this.$parent.message;
},
},
// and because of using computed, access it inside the template
template: '<span>{{ message }}</span>'
})
你只是导入了一些未继承的组件,所以你不能像那样共享数据。 将组件添加到父组件的组件字段中,如下所示: https://v2.vuejs.org/v2/guide/components.html#Local-Registration 然后在子组件中,您可以使用它.$parent。而这个.$parent.mydata在你的例子中