zoukankan      html  css  js  c++  java
  • vue基础---事件处理

    (1)事件监听

        v-on 指令监听 DOM 事件,并在触发时运行JS代码

        <div class="event_area">
            {{message}}
            <button v-on:click="show_info">按钮</button>
        </div>
        <script type="text/javascript">
            var event_area = new Vue({
                el:".event_area",
                data:{
                    message:'展示信息'
                },
                methods:{
                    show_info:function(){
                        alert(this.message);
                    }
                }
            })
        </script>

     案例2:计算按钮点击次数

        监听事件

        <div class="event_area">
            您点击了{{num}}次按钮
            <button v-on:click="num++">按钮</button>
        </div>
        <script type="text/javascript">
            var event_area = new Vue({
                el:".event_area",
                data:{
                    num:0
                }
            })
        </script>

        然而许多事件处理逻辑会更为复杂,所以直接把 JavaScript 代码写在 v-on 指令中是不可行的。因此 v-on 还可以接收一个需要调用的方法名称。如下所示,调用add_num方法

       解析: `this`在方法里指向当前 Vue 实例

        <div class="event_area">
            您点击了{{num}}次按钮
            <button v-on:click="add_num">按钮</button>
        </div>
        <script type="text/javascript">
            var event_area = new Vue({
                el:".event_area",
                data:{
                    num:0
                },
                methods:{
                    add_num:function(){
                        return this.num++;
                    }
                }
            })
        </script>

    (2)内联处理器中的方法

        除了直接绑定到一个方法,也可以在内联 JavaScript 语句中调用方法:

    <div id="example-3">
      <button v-on:click="say('hi')">Say hi</button>
      <button v-on:click="say('what')">Say what</button>
    </div>
    new Vue({
      el: '#example-3',
      methods: {
        say: function (message) {
          alert(message)
        }
      }
    })

    (3)事件修饰符

        ①表单事件:

        <form id="ti_jiao" v-on:submit="onSubmit">
            <input type="text"><br />
            <input type="submit" value="提交">
        </form>
        <script type="text/javascript">
            var ti_jiao = new Vue({
                el:"#ti_jiao",
                methods:{
                    onSubmit:function(e){
                        e.preventDefault();
                        alert("弹框")
                    }
                }
            })
        </script>

        阻止表单默认事件,即数据提交页面刷新。 

        在事件处理程序中调用 event.preventDefault() 或 event.stopPropagation() 是非常常见的需求。尽管可以在方法中轻松实现这点,但更好的方式是:方法只有纯粹的数据逻辑,而不是去处理 DOM 事件细节。

        为了解决这个问题,Vue.js 为 v-on 提供了事件修饰符。之前提过,修饰符是由点开头的指令后缀来表示的。

    .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>

        ②修饰符顺序

        使用修饰符时,顺序很重要;相应代码会以同样的顺序产生。

        因此,用 v-on:click.prevent.self 会阻止所有的点击,而 v-on:click.self.prevent 只会阻止对元素自身的点击。

       ③一次性修饰符

    <!-- 点击事件将只会触发一次 -->
    <
    input type="button" name="btn" v-on:click.once="prompt" value="弹框"> methods:{ prompt:function(){ alert("弹框"); } }

       结果:点击按钮后,只能弹框一次。

       ④被动修饰符

        Vue 还对应 addEventListener 中的 passive 选项提供了 .passive 修饰符

    <!-- 滚动事件的默认行为 (即滚动行为) 将会立即触发 -->
    <!-- 而不会等待 `onScroll` 完成  -->
    <!-- 这其中包含 `event.preventDefault()` 的情况 -->
    <div v-on:scroll.passive="onScroll">...</div>

        .passive 修饰符能够有效提升移动端的性能

    (4)按键修饰符(待验证

    (5)系统修饰符(待验证

    .

  • 相关阅读:
    线程运行boost库在工作(22)任务之二
    vi 帮助文档 man vi
    跳槽关系三国演义告诉我们的60条真理
    后台端口虚拟主机wdcp的相关问题以及解决方法
    格式化字符串android 格式化时间
    对象查询HQL多表联合查询的问题
    myeclipse8.6中svn插件的安装
    乱码解决方法
    Restfull风格是什么意思?
    poj3013
  • 原文地址:https://www.cnblogs.com/fightjianxian/p/10583929.html
Copyright © 2011-2022 走看看