美文网首页
vue2.0基础(四、实例和内置组件)

vue2.0基础(四、实例和内置组件)

作者: zZ_d205 | 来源:发表于2020-08-19 17:28 被阅读0次

    一、Vue和Jquery.js一起使用

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Vue和Jquery.js一起使用</title>
        <script src="../assets/js/vue.js"></script>
        <script src="../assets/js/vue.js"></script>
        <script src="../assets/js/jquery.js"></script>
    </head>
    <body>
        <h1>Vue和Jquery.js一起使用</h1>
        <hr>
        <div id="app">{{message}}</div>
        <script>
            var app= new Vue({
                el:'#app',
                data:{
                    message:"hello world"
                },
                mounted:function(){
                    $("#app").html("1111")
                },
                methods:{
                    add:function(){
                        console.log("app内部方法")
                    }
                }
            })
            app.add()
        </script>
    </body>
    </html>
    

    二、实例方法

    • 一、$mount方法

    $mount方法是用来挂载我们的扩展的,我们先来复习一下扩展的写法。

    • 二、$destroy() 卸载方法

    用$destroy()进行卸载。

    • 三、$forceUpdate() 更新方法
    vm.$forceUpdate()
    
    • 四、$nextTick() 数据修改方法

    当Vue构造器里的data值被修改完成后会调用这个方法,也相当于一个钩子函数吧,和构造器里的updated生命周期很像。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>实例方法</title>
        <script src="../assets/js/vue.js"></script>
    </head>
    <body>
        <h1>实例方法</h1>
        <hr>
        <div id="app">
    
        </div>
        <p><button onclick="destroy()">卸载</button></p>
        <p><button onclick="reload()">刷新</button></p>
        <p><button onclick="tick()">更改数据</button></p>
        <script>
    
            var jspang=Vue.extend({
                template:"<p>{{message}}</p>",
                data:function(){
                    return {
                        message:"hello,i am jspang"
                    }
                },
                mounted:function(){
                    console.log("创建")
                },
                // 销毁
                destroyed:function(){
                    console.log("销毁")
                },
                // 更新
                updated:function(){
                    console.log("更新")
                }
            })
    
            
    
            var vm =new jspang().$mount("#app")
            function destroy(){
              vm.$destroy();
            }
    
            function reload(){
                vm.$forceUpdate()
            }
    
            function tick(){
                vm.message="update message info ";
                vm.$nextTick(function(){
                    console.log('message更新完后我被调用了');
                })
            }
        </script>
    </body>
    </html>
    

    三、实例事件

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

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

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

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

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

    二、$once执行一次的事件

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

    三、$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>实例事件</title>
        <script src="../assets/js/vue.js"></script>
    </head>
    <body>
        <h1>实例事件</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>
    
           var app= new Vue({
                el: '#app',
                data: {
                    num: 1,
    
                },
                methods: {
                    add() {
                        console.log('原生方法')
                        this.num++;
                    }
                },
            })
    
            app.$on("reduce",function(){
                console.log('执行了方法')
                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>
    

    四、内置组件 -slot

    slot是标签的内容扩展,也就是说你用slot就可以在自定义组件时传递给组件内容,组件接收内容并输出。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>slot</title>
        <script src="../assets/js/vue.js"></script>
    </head>
    <body>
        <h1>slot</h1>
        <hr>
        <div id="app">
            
            <jspang>
                <span slot="bolgUrl">{{jspangData.bolgUrl}}</span>
                <span slot="netName">{{jspangData.netName}}</span>
                <span slot="skill">{{jspangData.skill}}</span>
            </jspang>
        </div>
    
    
        <template id="tmp">
            <div>
                <p>博客地址:<slot name="bolgUrl"></slot></p>
                <p>网名:<slot name="netName"></slot></p>
                <p>技术类型:<slot name="skill"></slot></p>
        
            </div>
        </template>
    
        <script>
            var jspang={
                template:"#tmp"
            }
    
           var app= new Vue({
                el: '#app',
                data:{
                    jspangData:{
                        bolgUrl:'http://jspang.com',
                        netName:'技术胖',
                        skill:'Web前端'
                    }
                },
                components:{
                    "jspang":jspang
                },
            
            })
    
    
        </script>
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:vue2.0基础(四、实例和内置组件)

          本文链接:https://www.haomeiwen.com/subject/zsorjktx.html