Vue 事件绑定 和 修饰符

news/2024/7/10 3:03:42 标签: vue.js, javascript, 前端, java, 后端, Vue

目录

一、事件绑定

        1.简介 : 

        2.实例 : 

二、修饰符

        1.简介 : 

        2.实例 : 

        3.扩展 : 


一、事件绑定

        1.简介 : 

        (1) Vue中,通过"v-on:事件名"可以绑定事件,eg : v-on:click表示绑定点击事件。

        (2) 触发事件时调用的方法,定义在Vue实例中声明的methods属性(结点)中

        2.实例 : 

                以绑定点击事件click为例,event.html代码如下 : 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Event binding</title>
    <script type="text/javascript>javascript" src="../vue.js"></script>
</head>
<body>
    <div id="app">
        <h1>{{preface}}</h1>
        <input type="button" v-on:click="testClick_1()" value="点我点我"/> <br/><br/>
        <!--
            当触发事件的回调函数不需要传入形参时,可以省略()
            PS : 需要浏览器支持
         -->
        <input type="button" v-on:click="testClick_2" value="别点他,点我!"/> <br/><br/>
        <input type="button" v-on:click="testClick_3" value="牛魔,点我才对!"/> <br/><br/>
        <!-- "v-on:"亦可简写为@, 同样需要浏览器的支持. -->
        <input type="button" @click="testClick_4" value="牛魔,点我才对!"/> <br/><br/>
    </div>
    <script>
        let vm = new Vue({
            //el 即 element的简写
            el:"#app",
            data:{
                preface:"This a demonstration about Vue's events processing."
            },
            methods:{
                testClick_1() {
                    alert("原神,启动!");
                },
                testClick_2() {
                    alert("op能不能收着点味儿?");
                },
                testClick_3() {
                    alert("😅😅😅😅😅");
                },
                testClick_4() {
                    alert("嘤嘤嘤");
                }
            }
        })
    </script>
</body>
</html>

                运行效果:(如下GIF图)


二、修饰符

        1.简介 : 

        修饰符Modifiers是由点.开头的指令后缀来表示的,指出某个指令以特殊方式进行绑定

        常见修饰符如下——

  •         .stop 
  •         .prevent
  •         .capture
  •         .self
  •         .once
  •         .passive
<!-- 阻止单击事件继续传播 -->
<a v-on:click.stop="doThis"></a>

<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>

<!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat"></a>

<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>

<!-- 添加事件监听器时使用事件捕获模式 -->
<!-- 即内部元素触发的事件先在此处理,然后才交由内部元素进行处理 -->
<div v-on:click.capture="doThis">...</div>

<!-- 只当在 event.target 是当前元素自身时触发处理函数 -->
<!-- 即事件不是从内部元素触发的 -->
<div v-on:click.self="doThat">...</div>

        此外,Vue 允许为v-on:在监听键盘事件时添加按键修饰符,eg : 

<!-- 只有在 `key` 是 `Enter` 时调用 `vm.submit()` -->
<input v-on:keyup.enter="submit">

        2.实例 : 

                在开发中,有时不希望将整个表单进行提交,而是以Ajax方式进行提交,这样,可以有选择性的提交数据,实现局部刷新,不会导致页面重载。
                以表单提交为例,使用.prevent修饰符阻止表单的正常提交,改为调用自定义的回调函数,在函数中进行相应的业务处理(此处为判断用户名是否为空)。
                modifiers_demo.html代码如下 : 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Demonstrate Modifiers</title>
    <script type="text/javascript>javascript" src="../vue.js"></script>
</head>
<body>
    <div id="app">
        <!--
            .prevent修饰符的存在,使得form表单默认的提交方式失效,
            触发submit事件时会调用绑定的onMySubmit函数。
         -->
        <form action="https://www.baidu.com" v-on:submit.prevent="onMySubmit">
            Username : <input type="text" v-model="user.username"/> <br/><br/>
            <input type="submit" value="Submit"/>
        </form>
    </div>
    <script type="text/javascript>javascript">
        let vm = new Vue ({
            el:"#app",
            data: {
                //以对象的形式提供数据(通过v-model数据双向渲染动态生成)
                user: {

                }
            },
            methods:{
                onMySubmit() {
                    if (this.user.username) {   //当作布尔值使用
                        alert("为世界上所有的美好而战!");
                        console.log("username =",this.user.username);
                    } else {
                        console.log("请输入用户名捏~");
                    }
                }
            }
        })
    </script>
</body>
</html>

                运行效果 : (如下GIF图)

        3.扩展 : 

                演示.once修饰符,"v-on:click.once"表示该点击事件在同一次页面只能触发一次。
                extensive_modifiers.html代码如下 : 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Demonstrate keyModifiers</title>
    <script type="text/javascript>javascript" src="../vue.js"></script>
</head>
<body>
    <div id="app">
        <button v-on:click.once="onMyClick">你只能点我一次捏~不信试试看</button>
    </div>
    <script type="text/javascript>javascript">
        let vm = new Vue({
            el:"#app",
            data: {
                name:"Cyan"
            },
            methods: {
                onMyClick() {
                    alert(this.name + "_RA9");
                }
            }
        })
    </script>
</body>
</html>

                运行效果 : (如下GIF)

                演示按键修饰符,"v-on:keyup.enter"表示按下键盘上的"Enter"键时会触发该事件,继而调用相应的函数。
                key_modifiers.html代码如下 : 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Demonstrate key modifiers</title>
    <script type="text/javascript>javascript" src="../vue.js"></script>
</head>
<body>
    <div id="app">
        <form action="#">
            Color : <input type="text" v-model="element.color" v-on:keyup.enter="onMySubmit"/> <br/>
        </form>
    </div>
    <script type="text/javascript>javascript">
        let vm = new Vue({
            el: "#app",
            data: {
                element: {

                }
            },
            methods: {
                onMySubmit() {
                    alert("你按下了Enter键~")
                }
            }
        })
    </script>
</body>
</html>

                运行效果:(如下GIF图)

        System.out.println("END-----------------------------------------------------------------");


http://www.niftyadmin.cn/n/5145848.html

相关文章

C#线程学习,线程的创建,线程的暂停,线程的锁lock,Monitor,线程使用中的注意事项(一)

C#线程学习&#xff0c;线程的创建&#xff0c;线程的暂停&#xff0c;线程的锁lock,Monitor&#xff0c;线程使用中的注意事项&#xff08;一&#xff09; 八股文 线程和进程 进程是指程序的一次执行过程&#xff0c;而线程是指进程中执行的一条单一逻辑控制流。 进程是由多…

人工智能与无人驾驶:未来驾驶体验的革命性变革

人工智能与无人驾驶&#xff1a;未来驾驶体验的革命性变革 人工智能&#xff08;AI&#xff09;和无人驾驶技术的迅速发展正在改变我们的交通方式和出行体验。它们结合了先进的感知技术、智能算法和高性能计算能力&#xff0c;为实现自动驾驶提供了可能性。本文将探讨人工智能和…

【python基础】format格式化函数的使用

文章目录 前言一、format()内容匹配替换1、序号索引2、关键字3、列表索引4、字典索引5、通过类的属性6、通过魔法参数 二、format()数字格式化 前言 语法&#xff1a;str.format() 说明&#xff1a;一种格式化字符串的函数。 一、format()内容匹配替换 1、序号索引 在没有参…

Linux CentOS7.9安装OpenJDK17

Linux CentOS7.9安装OpenJDK17 一、OpenJDK下载 清华大学开源软件镜像站 国内的站点&#xff0c;下载速度贼快 二、上传解压 文件上传到服务器后&#xff0c;解压命令&#xff1a; tar -zxvf jdk-xxxx-linux-x64.tar.gz三、配置环境 export JAVA_HOME/home/local/java/j…

Linux下使用vscode编写Python项目

我此处是使用VScode远程连接的服务器&#xff0c;具体方法可看如下&#xff1a; 1、vscode中安装Python插件 按上面步骤安装好Python插件后&#xff0c;重启vscode&#xff1b; 2、选择Python解释器 创建Python项目结构&#xff1a; 按下F1&#xff0c;打开vscode命令栏&am…

牛客项目(五)-使用kafka实现发送系统通知

kafka入门以及与spring整合 Message.java import java.util.Date;public class Message {private int id;private int fromId;private int toId;private String conversationId;private String content;private int status;private Date createTime;public int getId() {retur…

nodejs+vue高校实验室预约管理系统-计算机毕业设计

开发一款实验室预约管理系统&#xff0c;解决当前学校存在的实验室信息不透明&#xff0c;实验室空余时间不清晰&#xff0c;预约实验室过程繁琐费时的问题。提高实验室利用率。 对于学生&#xff0c; 系统应该分为实验室管理员模块和用户模块。实验室管理员模 块使用者为用户进…

【PWN · 栈迁移|off-by-one|伪随机|爆破】[HDCTF 2023]Makewish

一道精巧、包含很多要点的题目 一、题目 二、思路浅析 通过ctypes酷通过伪随机数检测&#xff0c;没用srand指定随机种子时&#xff0c;默认srand(1)。 通过puts_name的off-by-one来泄露canary 进入vuln时&#xff0c;发现只能刚好填充到rbp前面&#xff0c;但是会将最后一个…