I'm trying to figure out how to pass a prop in parent to child components.
It works perfectly if I add the prop attribute with the #id inside the child component tag e.g Image cid="488484-49544894-584854" but I would like to use the same cid in one location (parent) - is this possible?
The parent and child components have the same mounted and data functions. The cid gets passed to the contentDeliveryUrl to collect data.
App.vue
<template>
<div id="app" class="container" cid="7e4301de-9c6e-4fab-9e68-3031b94d662d">
<Images cid="same as parent div" />
<Video cid="same as parent div" />
<TextType cid="same as parent div" />
<Card cid="same as parent div" />
</div>
</template>
<script>
import axios from 'axios';
import Images from "./components/Images";
import Video from "./components/Video";
import TextType from "./components/TextType";
import Card from "./components/Card";
export default {
name: 'app',
props: ["cid"],
components: {
Images,
Video,
TextType,
Card
},
mounted() {
axios({method: "GET", "url": this.contentDeliveryUrl}).then(result => {
// eslint-disable-next-line
this.content = amp.inlineContent(result.data)[0];
console.log(this.content)
}, error => {
console.error(error);
});
},
data() {
return {
contentDeliveryUrl: 'https://c1.adis.ws/cms/content/query?fullBodyObject=true&query=%7B%22sys.iri%22%3A%22http%3A%2F%2Fcontent.cms.amplience.com%2F${this.cid}%22%7D&scope=tree&store=testing',
content: []
}
}
}
</script>
Image.vue
<template>
<div v-if="content.image">
</div>
</template>
<script>
import axios from 'axios';
export default {
props: ["cid"],
name:'Images',
mounted() {
axios({method: "GET", "url": this.contentDeliveryUrl}).then(result => {
// eslint-disable-next-line
this.content = amp.inlineContent(result.data)[0];
console.log(this.content)
}, error => {
console.error(error);
});
},
data() {
return {
contentDeliveryUrl: 'https://c1.adis.ws/cms/content/query?fullBodyObject=true&query=%7B%22sys.iri%22%3A%22http%3A%2F%2Fcontent.cms.amplience.com%2F${this.cid}%22%7D&scope=tree&store=testing',
content: []
}
},
}
</script>
The data comes back as undefined for all components using Vue Devtools.