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

View File

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