lesson 131: replace emit with inject

this is better because we're using dynamic components which makes it harder
to listen to a custom event comming from only one of the components.
This commit is contained in:
Andreas Zweili 2021-02-08 18:56:14 +01:00
parent d50e8d870e
commit 327f4133c3
2 changed files with 7 additions and 6 deletions

View File

@ -27,7 +27,7 @@
<script>
export default {
emits: ['new-resource'],
inject: ['storeNewResource'],
data() {
return {
title: '',
@ -38,12 +38,12 @@ export default {
methods: {
returnNewResource() {
const resource = {
id: this.title,
id: new Date().toISOString(),
title: this.title,
description: this.description,
link: this.link
};
this.$emit('new-resource', resource);
this.storeNewResource(resource);
}
}
};

View File

@ -11,7 +11,7 @@
>Add Resource</base-button
>
</base-card>
<component :is="selectedTab" @new-resource="storeNewResource"></component>
<component :is="selectedTab"></component>
</template>
<script>
@ -62,13 +62,14 @@ export default {
this.selectedTab = tab;
},
storeNewResource(resource) {
this.storedResources.push(resource);
this.storedResources.unshift(resource);
this.selectedTab = 'stored-resources';
}
},
provide() {
return {
storedResources: this.storedResources
storedResources: this.storedResources,
storeNewResource: this.storeNewResource
};
}
};