前端---【Vue2基础更新:介绍事件绑定、传参、修饰符,计算属性】

目录

1. 事件处理

1.1 事件绑定

1.2 事件传参

1.3 事件修饰符

1.4 键盘事件

1.4.1js键盘事件

 1.4.2vue键盘事件

2.计算属性案例


1. 事件处理

1.1 事件绑定

事件绑定是 Vue 中实现视图和业务逻辑交互的一种方式。将 DOM 元素上的原生事件绑定到 Vue 实例中的方法。当原生事件触发时,Vue 自动调用对应的实例方法。

  1. 使用v-on:xxx@xxx 绑定事件,xxx是事件名,同原生DOM事件名。

    <button v-on:click="showTel">点我查看学校电话1</button>
    <button @click="showTel">点我查看学校电话2</button>

        第一中是不间写的形式,第二种是简写的形式 

         2.事件的回调函数,要配置在methods中(data中写数据、methods中写方法)。

   3.Vue在触发事件回调时,会传入一个默认的参数 ——事件对象(event)

   4.methdos中的函数最终也会出现在vm上(但不存在数据代理)。

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8" />
    <title>事件绑定</title>
    <!-- 引入Vue -->
    <script type="text/javascript" src="../js/vue.js"></script>
</head>

<body>
    <!-- 准备好一个容器-->
    <div id="demo">
        <h2>你笑起来真好看</h2>
        <button v-on:click="show1">点我查看歌曲</button>
        <hr>
        <H2>歌曲你的楼兰</H2>
        <button @click="show2">我的楼兰</button>
    </div>
</body>

<script type="text/javascript">
    //阻止 vue 在启动时生成生产提示。
    Vue.config.productionTip = false;
    const vm = new Vue({
        el: "#demo",
        data: {
            konwlege: "vue"
        },
        methods: {
            show1(event) {

                console.log("this");
            },
            show2: function () {
                console.log("你总不小心把倩影挂在月亮上面");
            }
        }
    })

</script>

</html>

  

1.2 事件传参

  1. 不传递参数:@click="test1"test1方法会收到一个event(事件对象)。

  2. 传一个参数:@click="test2(6)"test2方法只会收到一个6

  3. 传多个参数:@click="test3(6,7,8)"test3方法会收到:6、7、8

  4. 传参+事件对象:@click="test4(6,$event)"test4方法会收到:事件对象6

事件传参代码举例:

第一步引入Vue文件

第二步 编写容器

第三部 New vue

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8" />
    <title>1-1事件传参</title>
    <!-- 引入Vue -->
    <script type="text/javascript" src="../js/vue.js"></script>
</head>

<body>
    <!-- 准备好一个容器-->
    <div id="demo">
        <button v-on:click="handleClick($event)">Submit</button>

    </div>
</body>

<script type="text/javascript">
    //阻止 vue 在启动时生成生产提示。
    Vue.config.productionTip = false;
    new Vue({
        el: "#demo",
        data: {
            sheep: "美羊羊啊",
            tel: "18000250000",
        },
        methods: {
            handleClick(event) {  // event 是原生 DOM 事件对象
                console.log(event.target)
            }
        }
    })
</script>

</html>

 

  5.传递的参数也可以是data中的数据,例如@click="test5(school)"

1.3 事件修饰符

  1. prevent:可以阻止默认行为。

  2. stop:可以阻止冒泡。

  3. once:事件只触发一次。

  4. 事件修饰符可以串联:

    <div @click="test" class="wraper">
        <a href="xxx" @click.prevent.stop="test">按钮</a>
    </div>

 事件修饰符代码示例:

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8" />
    <title>3-事件修饰符</title>
    <!-- 引入Vue -->
    <script type="text/javascript" src="../js/vue.js"></script>
    <style>

    </style>
</head>

<body>
    <!-- 准备好一个容器-->
    <div id="demo">
        <h2>你炸了{{yanyan}}</h2>
        <form action="https://www.baidu.com">
            <Button @click.prevent="showInfo">点我显示提示信息</Button>

    </div>
</body>

<script type="text/javascript">
    //阻止 vue 在启动时生成生产提示。
    Vue.config.productionTip = false;
    new Vue({
        el: "#demo",
        data: {
            yanyan: "沸羊羊"
        },
        methods: {
            showInfo(event) {
                // 阻止冒泡
                event.stopPropagation();
                alert("是美羊羊炸了");
            }
        }
    })

</script>

</html>

1.4 键盘事件

这里主要讲的是Vue里面的键盘事件,学习的过程容易学了后面,忘记了前面,这里先回顾一下JavaScript里面的键盘事件

1.4.1js键盘事件

可以使用以下方式在 JS 中绑定键盘事件:

element.addEventListener('keyup', (event) => {
  // 键盘事件逻辑
})

 前端中CSS+JS键盘事件代码示例

<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8" />
    <title>键盘事件1-1</title>
    <style>
        input {
            width: 200px;
            height: 30px;
            border: 1px solid #999;
        }

        /* 获得焦点时 */
        input:focus {
            background: #eee;
            outline: none;
        }

        /* 鼠标悬停时 */
        input:hover {
            border-color: blue;
        }

        /*元素被激活时鼠标点击或按键按下时 */
        input:active {
            border: 2px solid red;
        }
    </style>
</head>

<body>
    <input type="text">
    <script>
        // JS 中绑定键盘事件:
        const input = document.querySelector('input')
        //在 CSS 中,可以使用以下选择器监听键盘事件:
        input.addEventListener('keyup', (event) => {
            if (event.key === 'Enter' || event.keyCode === 13) {
                console.log('回车键被按下')
            } else if (event.ctrlKey && event.key === 's') {
                console.log('Ctrl + s 被按下')
            }
        })

        input.addEventListener('click', () => {
            console.log('输入框被点击')
        })
    </script>

</body>

</html>

运行截图中显示,点击输入框的时候,颜色会根据CSS设置的样式变,在控制台中可以看出键盘事件的触发。

 1.4.2vue键盘事件

现在这里开始讲vue中的键盘事件

  • Vue中的按键别名:

    1. 回车 => enter

    2. 删除 => delete (退格 、 删除 按键)

    3. 退出 => esc

    4. 空格 => space

    5. 换行 => tab (必须配合keydown去使用)

    6. 上 => up

    7. 下 => down

    8. 左 => left

    9. 右 => right

  • 也可以使用event.keyCode去指定具体的按键,例如:@keyup.13 绑定回车。

  • 有四个系统修饰键,用法比较特殊(了解即可),分别是:ctrlaltshiftmeta,规则如下:

    1. 若配合keydown使用:正常触发事件。

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

      

​
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8" />
    <title>4-键盘事件</title>
    <!-- 引入Vue -->
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<style>
    input {
        width: 300px;
    }
</style>

<body>
    <!-- 准备好一个容器-->
    <div id="demo">
        <h2>你炸了{{yanyan}}</h2>
        <!--键盘事件-->
        <input @keyup.enter="show" type="text" placeholder="按下回车提示用户输入内容"><br>
    </div>
</body>

<script type="text/javascript">
    //阻止 vue 在启动时生成生产提示。
    Vue.config.productionTip = false;
    new Vue({
        el: '#demo',
        data: {
            yanyan: "沸羊羊",

        },
        methods: {
            show(event) {
                console.log(event.target.value);
            }
        }
    })
</script>

</html>

​

2.计算属性案例

这里用到的知识点分析:

1. 使用插值语法 {{hello}} 将 data 中的 hello 值渲染在 h2 标题中。

2. 使用 v-model 双向绑定 input 和 data 中的 firstName 和 lastName。 input 的值变化会更新 data,data 的变化也会更新 input。

3. 定义 fullName 计算属性,在 h2 标题和多个 span 中使用 {{fullName}} 渲染。fullName 计算属性会返回 firstName 和 lastName 的拼接值,并在依赖的 data 变化时重新计算渲染。

4. 定义 methods 中的 add 方法,用于点按钮时使 sum 增加 1。按钮的 @click 绑定了该方法。

5. 在 computed 属性中定义 fullName,它包含一个 get 方法来返回拼接后的全名,这样可以避免每次拼接字符串产生新值,提高性能。

6. 在实例化 Vue 时,使用 el 指定挂载元素,data 指定数据,methods 指定方法,computed 指定计算属性。

代码示范:

​
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8" />
    <title>06-计算属性get函数</title>
    <!-- 引入Vue -->
    <script type="text/javascript" src="../js/vue.js"></script>
</head>

<body>
    <!-- 准备好一个容器-->
    <div id="demo">
        <h2>今天也在码前端{{hello}}</h2>
        <!--  v-model 双向数据绑定 -->
        姓: <input type="text" v-model="firstName"><br>
        名:<input type="text" v-model="lastName"><br>
        全名:<span>{{fullName}}</span> <br>
        全名:<span>{{fullName}}</span> <br>
        全名:<span>{{fullName}}</span> <br>
        全名:<span>{{fullName}}</span> <br>
        全名:<span>{{fullName}}</span> <br>
        全名:<span>{{fullName}}</span> <br>
        <hr>
        <h2>当前求和为:{{sum}}</h2>
        <button @click='add'>点我sum+1</button>
        <!--写一个计算属性-->


    </div>
</body>

<script type="text/javascript">
    //阻止 vue 在启动时生成生产提示。
    Vue.config.productionTip = false;
    const vm = new Vue({
        el: '#demo',
        data: {
            hello: '霖',
            firstName: '杨',
            lastName: '幂',
            sum: 0,
        },
        methods: {
            a() {

            },
            add() {
                this.sum += 1
            }
        },
        computed: {
            fullName: {
                // get函数何时调用?—— 有人使用fullName时
                // get函数中的this是谁? —— vm
                get() {
                    console.log('get')
                    return this.firstName.slice(0, 1).toUpperCase() + this.firstName.slice(1) + '-' + this.lastName
                },
            }
        }
    })


</script>

</html>

​

代码运行截图

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值