Reputation: 25
I have a class named Artefact
which contains a component AddArtefact
. But the Instance Lifecycle Hooks (mounted, created...) are not called in the AddArtefact
class and if you print this
it shows null
. But why is this?
Artefact:
<template>
<div>
<button v-show="selectedTab === 0" @click="AddArtefact">Add Artefact</button>
<AddArtefact v-show="selectedTab === 1"></AddArtefact>
</div>
</template>
<script lang="ts">
import {Vue, Prop, Component} from 'vue-property-decorator';
import $ from 'jquery';
import AddArtefact from '@/views/add/AddArtefact.vue';
@Component({
components: {
AddArtefact,
},
})
export default class Artefact extends Vue {
private selectedTab: number = 0;
private AddArtefact() {
this.selectTab(1);
}
private selectTab(tab: number) {
this.selectedTab = tab;
}
}
</script>
AddArtefact:
<template>
<div>
<p>{{Test}}</p>
<button @click="testClick">Test Button</button>
</div>
</template>
<script lang="ts">
import {Vue, Component, Prop} from 'vue-property-decorator';
import $ from 'jquery';
export default class AddArtefact extends Vue {
private Test: string = '';
private mounted() {
this.Test = 'Test 123';
console.log('test');
}
private testClick() {
console.log('Test Click');
console.log(this);
}
}
</script>
Upvotes: 0
Views: 79
Reputation: 9695
You forgot to add @Component
:
@Component
export default class AddArtefact extends Vue {
And you can put the mounted in there too:
@Component({
mounted(this: AddArtefact) {
...
}
})
export default class AddArtefact extends Vue {
Upvotes: 1