Vue教程(二):数据代理和事件处理

这篇具有很好参考价值的文章主要介绍了Vue教程(二):数据代理和事件处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、数据代理

数据代理

通过obj2操作obj1的对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>何为数据代理</title>
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
    <div id="root">

    </div>
</body>
<script type="text/javascript">
    let obj1 = {x:100};
    let obj2 = {y:200};

    Object.defineProperty(obj2, 'x', {
        get(){
            return obj1.x;
        },
        set(value){
            obj1.x = value;
        }
    })
</script>
</html>

在浏览器控制台测试结果:
Vue教程(二):数据代理和事件处理,Vue,vue.js,前端

2、事件处理

2.1 事件处理基础

完整代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>事件的基本使用</title>
    <script type="text/javascript" src="../js/vue.js"></script>
    <!-- 引入样式 -->
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
    <!-- 引入组件库 -->
    <script src="https://unpkg.com/element-ui/lib/index.js"></script>
</head>
<body>
<div id="root">
    <h2>欢迎来到{{name}}的Vue教程</h2>
    <el-button type="primary" @click="showInfo1">点我提示信息1【不传参数】</el-button>
    <el-button type="primary" @click="showInfo2($event, 35)">点我提示信息2【传参数】</el-button>
</div>
</body>
<script type="text/javascript">
    Vue.config.productionTip = false;

    // data的两种写法
    const vm = new Vue({
        el: '#root',
        data(){
            return{
                name: 'NoBug',
            }
        },
        methods:{
            showInfo1(event){
                console.log(event);
                console.log(this); // 此处的this是vm
                alert("Hello, Welcome to NoBug learning.")
            },
            showInfo2(event, value){
                console.log(event, value);
                console.log(this); // 此处的this是vm
                alert("Hello, Welcome to NoBug learning..." + value)
            }

        }
    })
</script>
</html>

总结

  • 使用v-on:xxx@xxx 绑定事件,其中xxx是事件名
  • 事件的回调需要配置在methods对象中,最终会在vm上
  • methods中配置的函数,不要用箭头函数!否在this就不是vm了
  • methods中配置的函数,都是被vue所管理的函数,this的指向是vm或组件实例对象
  • @click="function"@click="function($event)",效果一致,但后者可以传参数,不会覆盖点击事件默认传的event参数。

2.2 事件修饰符

六大修饰符介绍

前三个用的比较多,后三个了解一下即可

  • prevent:阻止默认事件
  • stop:阻止事件冒泡
  • once:事件只触发一次
  • capture:使用事件的捕获模式
  • self:只有event.target是当前操作的元素时才会触发
  • passive:事件的默认行为立即执行,无需等待事件回调执行完毕

完整代码和注释

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>事件修饰符</title>
    <script type="text/javascript" src="../js/vue.js"></script>
    <!-- 引入样式 -->
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
    <!-- 引入组件库 -->
    <script src="https://unpkg.com/element-ui/lib/index.js"></script>
    <style>
        *{
            margin-top: 30px;
        }
        .demo1{
            border: 2px solid black;
            padding: 10px;
        }
        .box1{
            padding: 5px;
            border: 2px solid green;
        }
        .box2{
            border: 2px solid red;
        }
        .list{
            height: 200px;
            width: 200px;
            background-color: peru;
            overflow: auto;
        }
        li{
            height: 100px;
        }
    </style>
</head>
<body>
<div id="root">
    <h2>欢迎来到{{name}}的Vue教程</h2>
    <!--    阻止默认事件:我们点击按钮之后,只会弹出提示信息,不会跳转到a标签所指定的href链接-->
    <a href="https://blog.csdn.net/WwLK123?spm=1011.2421.3001.5343" @click.prevent="showInfo">点我提示信息</a>
    <!--    阻止事件冒泡:一般情况下,我们点击按钮的事件之后,首先会弹出一次提示信息,但是接着也会触发div所绑定的点击事件再次弹出提示信息。我们给按钮绑定.stop之后就不会出现这种情况,-->
    <div class="demo1" @click="showInfo">
        <el-button type="primary" @click.stop="showInfo">点我提示信息</el-button>
    </div>
    <!--    事件只触发一次:给点击事件加上.once之后,我们点击多次按钮,但是只会弹出一次提示信息-->
    <el-button type="primary" @click.once="showInfo">点我提示信息</el-button>
    
    <!--    使用事件的捕获模式(用的不多)-->
    <div class="box1" @click.capture="showMsg(1)">
        div1
        <div class="box2" @click="showMsg(2)">
            div2
        </div>
    </div>
    <!--    只有event.target是当前操作的元素时才会触发-->
    <div class="demo1" @click.self="showInfo">
        <el-button type="primary" @click="showInfo">点我提示信息</el-button>
    </div>

    <!--    wheel是只有鼠标滚轮滚动才会触发 @wheel="demo"-->
    <!--    scroll是滚动条滚动(键盘上下控制,也可以鼠标滚轮控制)@scroll="demo"-->
    <!--    事件的默认行为立即执行,无需等待事件回调执行完毕-->
    <ul class="list" @wheel.passive="demo">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </ul>
</div>
</body>
<script type="text/javascript">
    Vue.config.productionTip = false;

    // data的两种写法
    const vm = new Vue({
        el: '#root',
        data(){
            return{
                name: 'NoBug',
            }
        },
        methods:{
            showInfo(e){
                console.log(e.target);
                alert("Hello, Welcome to NoBug learning.")
            },
            showMsg(msg){
                alert(msg);
            },
            demo(){
                for(let i=0; i<100000; i++){
                    console.log("#");
                }
                console.log("累坏了");
            }
        }
    })
</script>
</html>

由于所涉及的是动态变化,截图看不出效果,这里只提供了完整的代码和注释,可以亲自测试一下。

2.3 键盘事件

Vue中常用按键别名

  • 回车 enter
  • 删除 delete(退格和删除)
  • 退格 esc
  • 空格 space
  • 换行 tab(必须配合keydown使用)
  • up
  • down
  • left
  • right

系统修饰符(用法特殊)

  • ctrl

  • alt

  • shift

  • meta

  • 配合keyup使用的时候,按下修饰健的同时,再按下其他按键,随后释放其他按键,事件才被触发。

    • @keyup.ctrl.y意义代表,只有同时按下ctrly的时候才能触发事件。
  • 配合keydown使用的时候:正常触发事件。

注意:也可以使用keyCode去指定具体的按键,不推荐这样使用。因为已经弃用了。

Vue教程(二):数据代理和事件处理,Vue,vue.js,前端

Vue未提供别名的按键,可以使用按键原始的key值去绑定,但注意要转为kebab-case(短横线命名),比如:

大写锁定键,使用的时候是@keyup.caps-lock

自定义键名

这里是定义一个键名huiche,其键码是13,对应的就是enter

Vue.config.keyCodes.huiche = 13;文章来源地址https://www.toymoban.com/news/detail-610568.html

到了这里,关于Vue教程(二):数据代理和事件处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【热门前端【vue框架】】——vue框架和node.js的下载和安装保姆式教程

    👨‍💻个人主页 :@程序员-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏 :vue框架开发   Vue.js 是一款流行的 JavaScript 前端框架,它以其简单、灵活和高效的特性,成为了构建现代化 Web 应用程序的首选工具

    2024年04月27日
    浏览(54)
  • vue-codemirror实现一个前端代码在线编辑器,可处理 HTML,VUE,JS,CSS代码在线编辑

    先找个目录创建一个vue项目 例如 我们想要项目叫 editor 在终端执行 2和3其实都可以 但个人建议 最近还是2会更稳定一些 在终端执行 引入依赖包 然后在项目src目录下创建 utils 文件夹 里面创建一个setting.js 参考代码如下 然后 这边 调用组件的代码 因为项目也刚创 我直接写 s

    2024年02月15日
    浏览(53)
  • vue新学习 02 vue命令v-model,数据代理(作用域和作用域链),事件,监听,条件渲染,计算属性(也就是把操作属性的语句放到vue实例中)

    双向绑定用命令v-model: v-bind的命令是单项去绑定data中的相关属性,此时的data是真正的data,并没有用变量声明的方式去接收vue实例对象,也就是例如用const vm = new Vue({})。而是直接就采用了new Vue({})这样子的形式,(v-bind和v-model在这个例子中都是如此,所以现在并没有数据

    2024年02月15日
    浏览(38)
  • vue 实现前端处理 “数组数据“ 转excel格式文件,并导出excel表格

    一、安装插件 XLSX 二、页面引入        希望我的愚见能够帮助你哦~,若有不足之处,还望指出,你们有更好的解决方法,欢迎大家在评论区下方留言支持,大家一起相互学习参考呀~

    2024年01月18日
    浏览(54)
  • 【前端学习日记】Vue中的鼠标事件和键盘事件

    Vue提供了很好用的模板语法,包括插值语法 {{ }} 和指令语法v-?。使用指令语法很容易就可以为文档对象添加事件。 比较常用到的事件就是鼠标事件了。当用户使用鼠标点击网页上的某个元素,或者使用键盘按下某个键,会执行对应的回调(callback),进而在短时间内产生动

    2024年02月11日
    浏览(40)
  • js的鼠标事件(JavaScript的鼠标事件,vue的鼠标事件)

    js鼠标事件,相关属性: vue鼠标事件,相关属性 (js鼠标事件和vue中的鼠标事件区别是省略了on字符):

    2024年02月12日
    浏览(45)
  • nginx配置vue前端代理

    背景:做一个前后端分离的项目,我这里是vue3 + view + ts创建的前端项目,在前端配置跨域请求。 一、开发阶段 在vue.config.js中配置devserver的proxy进行代理请求配置,然后将所有请求改为/api开头的即可。但是这样配置只在开发阶段起作用。所以在nginx上部署的时候,需要再重新

    2024年02月03日
    浏览(47)
  • Vue前端框架10 组件的组成、组件嵌套关系、组件的注册方式、组件传递数据(props $emit)、数组传递多种数据类型、组件传递props校验、组件事件

    组件最大的优势就是可复用性 通常将组件定义在.vue中,也就是SFC单文件组件 组件的基本组成: 组件允许我们将UI划分为独立的、可重用的部分,并且对每个部分单独思考 实际应用中组件常常被组件成层层嵌套的树状结构 Vue组件使用前要注册,注册有两种方式:全局注册和

    2024年02月09日
    浏览(48)
  • three.js实现点击事件(vue)

    1.加载模型(通过点击模型触发事件) 2.通过射线获取到事件源 (new THREE.Raycaster()和new THREE.Vector2()) 3.通过点击到该模型使用名字匹配 clickedObject.name==“xx” addEventListener监听事件触发 创建 Raycaster和Vector2 计算鼠标或触摸点的位置 (这里的event是通过事件监听获取) 更新射线

    2024年02月16日
    浏览(49)
  • Vue中的事件处理

    一,基本使用 1.使用v-on:事件名或者@事件名绑定事件 常见的事件有: onclick , 鼠标单击事件;  ondblclick , 鼠标双击事件; onmousedown ,鼠标按下去的事件; onmouseup ,鼠标弹起事件; onmouseover , onmouseenter , onmouseout , onmouseleave ,  onmousemove  监控鼠标的移入移出,以及移动事件 onk

    2024年02月17日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包