zoukankan      html  css  js  c++  java
  • Vue2.0 【第四季】第3节 实例事件

    Vue2.0 【第四季】第3节 实例事件


    第3节 实例事件

    实例事件就是在构造器外部写一个调用构造器内部的方法。这样写的好处是可以通过这种写法在构造器外部调用构造器内部的数据。

    我们还是写一个点击按钮,持续加1的例子。

    一、$on 在构造器外部添加事件

    app.$on('reduce',function(){
        console.log('执行了reduce()');
        this.num--;
    });
    

    $on接收两个参数,第一个参数是调用时的事件名称,第二个参数是一个匿名方法。

    如果按钮在作用域外部,可以利用$emit来执行。

    //外部调用内部事件
    function reduce(){
        app.$emit('reduce');
    }
    

    全部代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>example03</title>
        <script type="text/javascript" src="../assets/js/vue.js"></script>
    </head>
        <body>
            <h1>example03</h1>
            <hr>
            <div id="app">
                {{num}}
                <p><button @click="add">add</button></p>
            </div>
            <p><button onclick="reduce()">reduce</button></p>
    
            <script type="text/javascript">
                var app = new Vue({
                    el:'#app',
                    data:{
                        num:1
                    },
                    methods:{
                        add:function(){
                            this.num++;
                        }
                    }
                });
    
                app.$on("reduce",function(){
                    console.log("执行了reduce方法");
                    this.num--;
                })
    
                function reduce(){
                    app.$emit('reduce');
                }
            </script>
        </body>
    </html>
    

    浏览器效果:

    二、$once执行一次的事件

    app.$once('reduceOnce',function(){
        console.log('只执行一次的方法');
        this.num--;
    
    });
    

    全部代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>example03</title>
        <script type="text/javascript" src="../assets/js/vue.js"></script>
    </head>
        <body>
            <h1>example03</h1>
            <hr>
            <div id="app">
                {{num}}
                <p><button @click="add">add</button></p>
            </div>
            <p><button onclick="reduce()">reduce</button></p>
            <p><button onclick="reduceOnce()">reduceOnce</button></p>
    
            <script type="text/javascript">
                var app = new Vue({
                    el:'#app',
                    data:{
                        num:1
                    },
                    methods:{
                        add:function(){
                            this.num++;
                        }
                    }
                });
    
                app.$on("reduce",function(){
                    console.log("执行了reduce方法");
                    this.num--;
                })
    
                app.$once('reduceOnce',function(){
                    console.log('只执行一次的方法');
                    this.num--;
    
                });
    
                function reduce(){
                    app.$emit('reduce');
                }
    
                function reduceOnce(){
                    app.$emit('reduceOnce');
                }
            </script>
        </body>
    </html>
    

    浏览器效果:

    三、$off关闭事件

    ···
    //关闭事件
    function off(){
    app.$off('reduce');
    }
    ···

    全部代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>example03</title>
        <script type="text/javascript" src="../assets/js/vue.js"></script>
    </head>
        <body>
            <h1>example03</h1>
            <hr>
            <div id="app">
                {{num}}
                <p><button @click="add">add</button></p>
            </div>
            <p><button onclick="reduce()">reduce</button></p>
            <p><button onclick="reduceOnce()">reduceOnce</button></p>
            <p><button onclick="off()">off</button></p>
    
            <script type="text/javascript">
                var app = new Vue({
                    el:'#app',
                    data:{
                        num:1
                    },
                    methods:{
                        add:function(){
                            this.num++;
                        }
                    }
                });
    
                app.$on("reduce",function(){
                    console.log("执行了reduce方法");
                    this.num--;
                })
    
                app.$once('reduceOnce',function(){
                    console.log('只执行一次的方法');
                    this.num--;
    
                });
    
                function reduce(){
                    app.$emit('reduce');
                }
    
                function reduceOnce(){
                    app.$emit('reduceOnce');
                }
    
                //关闭事件
                function off(){
                    app.$off('reduce');
                }
            </script>
        </body>
    </html>
    

    浏览器效果:

    Keep moving on!
  • 相关阅读:
    .NET : 单元测试到底给我们带来什么
    .NET : 如何将16进制颜色代码转换为十进制
    LINQ : 谈谈LINQ TO SQL中的直接加载和延迟加载
    .NET : 单元测试的几个Attribute介绍
    .NET : 在单元测试中使用外部文件作为数据源
    再来谈谈json
    .NET : 关于图片格式的问题
    VSTS : 比较性能基准
    .NET : 如何将大文件写入到数据库中
    LINQ : 如何在JOIN或者GROUP BY的时候使用复合键
  • 原文地址:https://www.cnblogs.com/Elva3zora/p/12510155.html
Copyright © 2011-2022 走看看