当前位置: 首页 > article >正文

Vue3事件绑定

        Vue3是一个流行的JavaScript框架,用于构建交互式Web应用程序。在Vue3中,v-onv-model是两个非常重要的指令,它们允许您向Vue应用程序添加交互性和响应性。

Vue3是一个流行的JavaScript框架,用于构建交互式Web应用程序。在Vue3中,v-onv-model是两个非常重要的指令,它们允许您向Vue应用程序添加交互性和响应性。

v-on指令

v-on指令用于监听DOM事件,当事件被触发时,执行指定的方法。该指令可以添加到任何HTML元素上,例如按钮,文本框等。

语法格式如下:

<button v-on:click="methodName">Click me</button>

在上面的例子中,v-on指令将监听按钮的点击事件,当按钮被点击时,methodName方法将被调用。

您也可以使用缩写语法来表示v-on指令。例如,您可以使用以下方式替换上面的示例:

<button @click="methodName">Click me</button>

在这里,@click等同于v-on:click

v-model指令

v-model指令用于在表单元素和Vue实例之间双向绑定数据。这意味着当表单元素的值更改时,Vue实例中的数据也会自动更新,反之亦然。 v-model指令可以应用于各种表单元素,如文本框,单选按钮,多选按钮等。

语法格式如下:

<input v-model="propertyName">

在上面的例子中,v-model指令将输入框的值与Vue实例中的propertyName属性进行绑定。如果用户更改输入框的值,则Vue实例中的propertyName属性也将自动更新。

需要注意的是,v-model指令只适用于简单的表单元素。对于复杂的表单元素,例如多选框和复选框,您需要使用v-bind指令和v-on指令来手动实现双向绑定。

总之,v-on指令用于监听DOM事件,v-model指令用于实现表单元素和Vue实例之间的双向绑定。使用这两个指令可以大大增强Vue应用程序的交互性和响应性。

实例

<template>
  <div>

    <p id="dom">{{msg}}</p>

    <!-- v-on:事件名="事件方法" 绑定事件 简写@:事件名="事件方法"  -->
    <button @click="handClick">Click</button>

    <!-- model 双向绑定 -->
    <input v-model="useName" placeholder="请输入姓名" type="text">
    <!-- <input v-model="useName" placeholder="请输入姓名" type="text"> -->
    <textarea placeholder="请输入建议" v-model="useInput" id="" cols="30" rows="10"></textarea>
    <p>{{useName}}----{{useInput}}</p>

    <button @click="submit">submit</button>

    <!-- input 输入事件 
      blur:失去焦点
      focus:获取焦点
      change:内容更改
    
    -->

    <input type="text" @blur="blur" v-model="userPhone">



  </div>
</template>


<script>
  // @ is an alias to /src
  import { reactive, toRefs, onBeforeMount, onMounted, onBeforeUpdate, onUpdated } from "vue";


  export default {
    name: 'name',

    setup() {

      const data = reactive({
        msg: '你好',
        useName: '',
        useInput: '',
        userPhone: '',
      })

      // 数据渲染前
      onBeforeMount(() => {
        console.log('onBeforeMount', document.querySelector('#dom'));
      })

      // 数据渲染后
      onMounted(() => {
        console.log('onMount', document.querySelector('#dom'));

        setTimeout(() => {
          data.msg = 'xxxxxxx';
        }, 2000)

      })
      // 数据更新前
      onBeforeUpdate(() => {
        console.log('onBeforeUpdate');
      })

      // 数据更新后
      onUpdated(() => {
        console.log('onUpdated');
      })

      const handClick = () => {
        alert("你好");
      }

      const submit = () => {
        alert(`${data.useName}的建议是${data.useInput}`);
      }

      const blur = () => {

        let reg = /^[1][1,4,5,7,8][0-9]{9}$/;
        if (data.userPhone === '') alert('手机号不能为空')
        else if (!reg.test(data.userPhone)) {
          alert('请正确输入手机号');

        }

      }

      return {
        ...toRefs(data),
        handClick,
        submit,
        blur,
      }

    },

  }
</script>


http://www.kler.cn/news/16253.html

相关文章:

  • 【五一创作】50道Java面试题
  • Python的一些知识
  • 做了一年csgo搬砖项目,还清所有债务:会赚钱的人都在做这件事 !
  • 更轻更好用的蓝牙耳机,日常佩戴更舒适,QCY Crossky Link体验
  • Nginx:常见的面试题和答案
  • Delphi 内存分配
  • Java程序猿搬砖笔记(十二)
  • 记录和传播知识的重要性不亚于创造知识本身【专利所保护的,主要是`流程`、`工艺`和`方法`,不是一个具体的产品。】
  • 与贵州公安面对面|欧科云链天眼中国行,他们都说“行”
  • 点亮第一个LED灯
  • vue3+element-plus角色权限管理分配
  • 使用cube studio开发机器学习建模的pipeline
  • Java面试题字节流字符流
  • python-使用Qchart总结3-绘制曲线图
  • 马斯克们叫停 GPT-5,更像是场行为艺术
  • 【SpringBoot 应用打包与部署】
  • 为什么越来越多的企业选择云计算
  • 《Netty》从零开始学netty源码(四十六)之PooledByteBuf
  • 不能使用chatGPT?这3个平替甚至比chatGPT更强
  • 万字长文 - Nature 综述系列 - 给生物学家的机器学习指南 2 (传统机器学习方法如何选择)...
  • 《孙子兵法》中关于领导力的一个不错的描述
  • 创建NAT模式KVM虚拟机
  • spring常用的事务传播行为
  • CSS(二)-- 选择器的运用(针对基本选择器和复合选择器的详细解析)
  • 一文了解使用Moonbeam原生跨链的潜力项目
  • 【Java笔试强训 27】
  • 【Leetcode -86.分隔链表 -92.反转链表Ⅱ】
  • LeetCode_字符串_简单_415.字符串相加
  • 终于把 vue-router 运行原理讲明白了(二)!!!
  • 票务app开发案例分享