Kei*_*agh 6 typescript vue.js vuejs3
我最近开始使用 VueJS,我使用的是 v3,似乎在调用父级方法时遇到问题。子项中的发射函数似乎没有发出事件,父项中也没有接收到任何内容。
我已经包括了父母和孩子来展示我是如何设置的
家长
<template>
<First/>
< Child v-bind:sample="sample" @enlarge-text="onEnlargeText"/>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import axios from 'axios';
import First from './First.vue';
import Child from './Child.vue';
export default defineComponent({
name: 'Container',
components: {
First,
Child,
},
methods: {
onEnlargeText() {
console.log('enlargeText');
},
},
data: () => ({
sample: [],
parentmessage: '',
}),
created() {
axios.get('http://localhost:8080/getData')
.then((response) => {
console.log(response);
this.sample = response.data;
})
.catch((error) => {
console.log(error);
});
},
});
</script>
Run Code Online (Sandbox Code Playgroud)
孩子
<template>
<div id="add">
<form id="signup-form" @submit.prevent="submit">
<label for="text">Text:</label>
<input type="text" v-model="text" required>
<p class="error" >{{ error }}</p>
<div class="field has-text-right">
<button type="submit" class="button is-danger">Submit</button>
</div>
</form>
<button v-on:click="tryThis">
Enlarge text
</button>
</div>
</template>
<script lang="ts">
import { defineComponent, ref } from 'vue';
import axios from 'axios';
interface SampleInterface {
text: string;
error: string;
}
export default defineComponent({
name: 'Add',
data: (): AddInterface => ({
text: '',
error: '',
}),
methods: {
tryThis() {
this.$emit('enlarge-text');
},
submit() {
this.$emit('enlarge-text');
},
},
});
</script>
Run Code Online (Sandbox Code Playgroud)
这应该怎么做?有什么我错过了吗?
我想知道我还能在这里使用 $emit 吗?
您应该添加emits option包含发出的事件名称的新名称:
孩子 :
<template>
<div id="child">
<button v-on:click="tryThis">Enlarge text</button>
</div>
</template>
<script lang="ts">
import { defineComponent } from "vue";
export default defineComponent({
name: "Child",
emits: ["enlargeText"],
methods: {
tryThis() {
console.log("trying");
this.$emit("enlargeText", "someValue");
},
},
});
</script>
Run Code Online (Sandbox Code Playgroud)
家长:
<template>
<div>
<p>Container</p>
<Child @enlargeText="onEnlargeText" />
</div>
</template>
<script lang="ts">
import { defineComponent } from "vue";
import Child from "./Child.vue";
export default defineComponent({
name: "UrlContainer",
components: {
Child,
},
methods: {
onEnlargeText() {
console.log("enlarging text");
},
},
});
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3656 次 |
| 最近记录: |