vue事件修饰符01

6 篇文章 0 订阅

vue事件修饰符以及跑马灯小案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="vue.js"></script>
    <style>
    
        .inner{
            width:500px;
            height:500px;
            background:red;
        }
    </style>
 


        
   
</head>
<body>

    <!-- //vue 实例所控制的元素区域。就是我们的 v -->
    <div class="app"> 
        <h2> {{msg}} </h2>
        <!-- 使用 v-cloak 能够解决 插值表达式的闪烁问题 -->
        <p v-cloak>  +++++{{ msg }}+++++++ </p>
        <h2 v-text="msg">=================</h2>
        <p v-html="msg1"> sdf </p>
        <!-- v-text 会覆盖元素中原本的内容。插值表达式只会替换自己的这个占位符,不会把整个页面的内容清空 -->
         <!-- //v-on:绑定事件函数 缩写  @ -->
        <input type="button" value="开始" @click = "start_on"> 
        <input type="button" value="停止" @click = "tingzhi">
        <h2> {{message}} </h2>
    </div>
    <script>
        let vm = new Vue({   // new 出来的vm 对象,就是我们  MVVM 中的VM 的调度者
            el : '.app',   // 当前我们new  的这个vue 实例,要控制页面上的哪一个区域
            data:{  //MVVM中的M,来保存页面数据
                msg : '这是一个实例',
                msg1:121212,
                message : '猥琐发育,别浪!',
                timer : null
            },
            methods : {
                
                start_on: function(){
                        let _this = this;  //解决this指向问题
                        if(this.timer != null) return;  //判断有没有定时器,有的话,将停止不再启动定时器
                        this.timer = setInterval(function(){  //也可以用箭头函数来改变this指向
                                let prev =_this.message.substring(0,1);
                                    let end =_this.message.substring(1);
                                    _this.message = end + prev;
                            },300)
                //会出现点击多次定时器,速度越来越快的原因
                },
                tingzhi:function(){
                        clearInterval(this.timer); 
                        // 会出现点击多次定时器停不了的原因
                        this.timer = null;//当第一次点击执行停止后,timer虽然被清除了,但是并不为空,所有后面的程序执行不了,要在清除定时器的时候将timer页变为空
                }
            }   
        });
    



    
        

    </script>

    <div id="app1">
        <!-- // 事件修饰符

 // 使用  .stop 阻止事件冒泡 -->

        <!-- <div class="inner" @click = "divHeader">
            <input type="button" value="点击" @click.stop = "btnHandler">
        </div> -->
<!-- 使用  .prevent 阻止默认行为  (阻止a跳转)-->
<a href="http://www.baidu.com" @click.prevent = "linkHeader">有问题,去百度</a>

<!-- 使用  .once 只触发一次事件初六函数 -->
<a href="http://www.baidu.com" @click.prevent.once = "linkHeader">去百度</a>


<!-- 使用  .capture 实现捕获触发事件的机制 -->
<div class="inner" @click.capture = "divHeader">
    <input type="button" value="搓他" @click = "btnHandler">
</div>

`
<!-- 使用  .self 实现只有点击当前元素,才会触发事件处理函数 -->
<!-- <div class="inner" @click.self= "divHeader">
        <input type="button" value="搓他" @click = "btnHandler">
    </div> -->
    
<!-- stop 和 .self 的区别 -->

<!-- .self只会阻止自己身上冒泡行为的触发,不会真正阻止冒泡的行为  -->

 </div>


    <script>
        let vmm = new Vue({
            el:'#app1',
            data:{
                    msg:"lalal"
            },
            methods : {
                divHeader(){
                    console.log('这是div');
                },
                btnHandler(){
                    console.log('这是input');
                },
                linkHeader(){
                    console.log('这是a')
                }

            }

        })
    
    </script>
</body>
</html>


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值