Vue.js新手,尝试在表示表单的组件中处理提交事件,该表单将检查子组件的有效性,并在一切正常的情况下将处理传递给父组件中的事件处理程序。
我得到这个错误。。。[Vue warn]:v-on处理程序中的错误:“TypeError:undefined不是在中找到的对象(计算“$event.preventDefault”)”---
子组件是MyForm。。。
<template lang="pug">
form(@submit.prevent='onFormSubmit', novalidate, autocomplete='on')
slot Content needed in MyForm
</template>
<script lang="ts">
import { defineComponent } from "@vue/composition-api"
export default defineComponent({
name: "MyForm",
setup(_, { emit }) {
const onFormSubmit = () => {
console.log("MyForm:onFormSubmit() - called first")
// Validate child components, if invalid, STOP, otherwise continue...
emit("submit") // errors
}
},
})
父组件(应用程序)。。。
<template lang="pug">
#app
.container
MyForm(@submit.prevent='onSubmit')
...other components
</template>
<script lang="ts">
import { defineComponent } from "@vue/composition-api"
import MyForm from "@/components/MyForm.vue"
export default defineComponent({
name: "App",
components: {
MyForm,
},
setup() {
const onSubmit = (): void => {
console.log("App.vue:onSubmit() - called second")
}
return { onSubmit }
}
</script>
或者,将应用程序的onSubmit()函数作为道具传递给MyForm会更好吗?我可以在MyForm中进行验证,然后调用传入函数?
TL;博士:
从父应用程序中删除。阻止
。
说明:
如注释中所述,您不需要在自己的父组件中使用
.prevent
。事件上的.prevent
基本上阻止了默认事件的传播。因此,例如,在您的表单(@submit.prevent='onFormSubmit'
)中,当您的表单通常会被提交时(例如按enter键),正常提交事件将被阻止,而您的方法onFormSubmit将被调用。
但在父组件中,没有要防止的默认javascript事件。这就解释了为什么会出现错误
TypeError:undefined不是对象(计算“$event.preventDefault”)
-没有$event
,因此它是undefined
。而未定义
不是对象。
1. 前言 本小节我们介绍 Vue 中如何进行事件处理。在章节 2.2 中我们已经介绍了指令 v-on,本章节我们将详细介绍在 v-on 的一些用法。包括如何传递参数、如何使用事件修饰符等。其中,事件修饰符是本章节的难点。事件修饰符很多,同学们不需要一下子都记住,只要学会如何使用它,在开发过程中如果有所遗忘,可以通过翻看文档来使用。 2. 慕课解释 可以用 v-on 指令监听 DOM 事件,并在触
监听事件 可以用 v-on 指令监听 DOM 事件来触发一些 JavaScript 代码。 示例: <div id="example-1"> <button v-on:click="counter += 1">增加 1</button> <p>这个按钮被点击了 {{ counter }} 次。</p> </div> var example1 = new Vue({ el: '#exa
如果我正在读写本地文件,那么对远程数据库服务器的更新相对昂贵。如果增加[chunk-size],内存使用量就会上升。 提交频率对编写本地文件并没有太大的影响,所以对我来说,元数据更新才是一个问题。该步骤是可重新启动的,因此从技术上讲,我不需要记录中间提交计数。 对于JobRepository,我可以只使用map或内存数据库,但我需要其他信息,例如持久化的开始/结束时间,而且这个问题只涉及一个步骤。
问题内容: 我有一个问题。我有多个表单元素(带有的表单),我还使用AJAX 添加了另一个表单元素。因此,我希望它处理类似的Submit事件: 但是添加了AJAX的表单无法使用。 问题出在哪里?是虫子吗? 问题答案: 您需要将事件委托给文档级别 的工作原理与您使用时相同,但也适用于以后添加的DOM。
父组件中如何处理子组件内点击事件
我们需要在constructor中对于事件与对应的handler函数进行绑定. 大多数时候我们在发出DOM事件的组件内部写我们的handler函数. 在下面的例子中,我们在组件内部创建了一个click handler, 因为我们想所有的Swithcer Component当被点击时,做出同样的响应. class Switcher extends React.Component { render