zoukankan      html  css  js  c++  java
  • Vue自定义组件

    Vue中自定义组件分为:

      全局自定义组件:在任意一个通过new关键字创建的vue实例中都可以使用。

      局部自定义组件:只能在当前实例中使用

      注意:所有的组件都只能渲染一个根标签,可以在根标签里嵌套内容。

    全局自定义组件的具体用法:

      组件的形式就是以标签的形式来使用,相当于自定义一个标签

    <div id="app">
        <test-component></test-component>
    </div>

      需要在Vue的原型中的方法定义一个自定义的组件(标签)

      语法:Vue.component("自定义组件名(也可以叫自定义标签名)",{

      template:``, //自定义组件内容(模板)

    })

    Vue.component("test-component",{
       template:`<div>这是自定义的一个标签</div>` 
    })
     var vm = new Vue({
       el:"#qpp",
       data:{
        }  
    
    })

    注意:组件中的内容参数在组件自己内部,不在Vue实例中

    参数以函数的返回值的形式来表示的,返回的是一个对象

    Vue.component('test-component',{   //组件的信息
                data(){  
                    return {
                        msg : "test"
                    }
                },
                template : `
                    <div>
                        <div>全局</div>
                        <p>组件</p>
                        <h1> {{ msg }} </h1>
                    </div>
                `
            })

    局部自定组件的使用

      局部自定义组件的使用,语法和全局自定组件相同但是写的位置不同,写在当前Vue实例中,

      语法:

     components : { 
                  组件名称 : {
                        template : `<div>    //组件的自定义模块            
                            <h1>这是一个局部的组件</h1>
                        </div>`
                    }
                }
    new Vue({
                el : "#app", //模板
                data : {   //所有的数据都在这里
                    msg : 'hello world'
                },
                components : {  //自定义组组件,(局部的哟)
                    'demo-component' : {
                        template : `<div>                
                            <h1>这是一个局部的组件</h1>
                        </div>`
                    }
                }
            })

    注意:自定义组件中的数据,也是在自定义组件中定义的data当中,也是以函数返回值得形式表示,也不嗯给你拿Vue实例中的data。

            new Vue({
                el : "#app",
                data : {
                    msg : 'hello world'
                },
                components : {
                    'demo-component' : {
                data:function(){
                  return {
                  msg:"abc",
                }
                },
    template : `
    <div> <h1>这是一个局部的组件</h1>     <span>{{ msg }}</span> </div>` } } })

     组件之间的嵌套

      全局组件嵌套在局部组件内,全局组件之间的嵌套,嵌套的话就之间嵌套在要嵌套的组件template模板内,因为组件只能渲染一个根标签,所以嵌套的方式就和html中标签的嵌套方式一样,标签中套标签。

     

     全局组件嵌套在局部组件内

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="app">
            {{ msg }}
            <hr>
            <!-- 组件的使用,就相当于自定义的标签,组件的名称就可以当成一个自定义的标签 -->
            <li-component></li-component>
            <demo-component></demo-component>
        </div>
        <script>
            // 全局的组件
            Vue.component('test-component',{   //组件的信息
                data(){
                    return {
                        msg : "test"
                    }
                },
                template : `
                    <div>
                        <div>全局</div>
                        <p>组件</p>
                        <h1> {{ msg }} </h1>
                        <li-component></li-component>
                    </div>
                `
            })
            Vue.component('li-component',{
                template : "<li>test - li - 01</li>"
            })
            new Vue({
                el : "#app",
                data : {
                    msg : 'hello world'
                },
                components : {
                    'demo-component' : {  //这是一个局部组件
                        template : `<div>                
                            <h1>这是一个局部的组件</h1>
                            <test-component></test-component> //这是一个全局组件
                            <li-component></li-component> //这也是一个全局组件
                        </div>`
                    }
                }
            })
        </script>
    </body>
    </html>

    全局组件之间的嵌套

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="app">
            <demo-component></demo-component> //这是第一个全局自定义组件标签
        </div>
        <script>
            // 全局的组件
            Vue.component('test-component',{   //这是第一个全局组件
                data(){
                    return {
                        msg : "test"
                    }
                },
                template : `
                    <div>
                        <div>全局</div>
                        <p>组件</p>
                        <h1> {{ msg }} </h1>
                        <li-component></li-component> //这是第二个全局组件标签
                    </div>
                `
            })
            Vue.component('li-component',{//这是第二个全局组件
                template : "<li>test - li - 01</li>"
            })
            new Vue({
                el : "#app",
            })
        </script>
    </body>
    </html>

     



  • 相关阅读:
    1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause
    camera 3A算法
    fatal: unable to access 'https://github.com/XXXX.git/': OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
    mysql判断表是否存在
    工具网站
    HSSFWorkbook实现导入导出
    mysql缓存问题 相关参数的查看
    mysql日期转换格式
    Java8新特性之Lambda表达式
    国产浏览器
  • 原文地址:https://www.cnblogs.com/Godfather-twq/p/11815359.html
Copyright © 2011-2022 走看看