2018-09-18vue.js组件

一、组件:可以拓展HTML元素,封装可重用的代码
组件分为全局组件和局部组件
通过prop向子组件传递数据

全局组件:
body部分:

  <div id="itany">

       <my-component></my-component>

  </div>

js部分:

 <script src="js/vue.js"></script> 

 <script> 
      //全局组件
                  Vue.component('my-component',{ 
                      template:`
                                  <div> <h1>这是我第一个组件</h1>
                                    <a href="#">去百度</a> 
                                    <a href="#">去百度</a> 
                                    <a href="#">去百度</a>
                                    <a href="#">去百度</a> 
                                     <a href="#">去百度</a>  
                                        <a href="#">去百度</a> 
                                    </div> ` 
                                   }) 
                   new Vue({ 
                          el:"#itany", 
                data:{ 
                     msg:'hello vue'
                      }
             }
         }) 
     </script>

二、全局组件和局部组件:

组件可以被嵌套
组件中的data属性必须是一个函数
body部分:

 <div id="itany">
      <my-component></my-component>
</div>

js部分:

<script src="js/vue.js"></script>
<script>
  //组件一
   Vue.component("my-component",{
    template:`
        <div>
            <h1>{{msg}}</h1>
            <button @click="alt">点击按钮</button>
            <my-child></my-child>
        </div>
    `,
    data:function(){
        return{
            msg:'我是组件一中的内容'
        }
    },
    methods:{
        alt:function(){
            alert(1111)
        }
    }
})

//组件二
Vue.component("my-child",{
    template:`
        <div>
            <p>我是组件二</p>
            <a href="#">去百度</a>
        </div>
    `
})
new Vue({
    el:"#itany",
})
</script>

效果图:


组件.png

三、父给子传值案例props['属性名']

body部分:

 <div id="itany">
      <father></father>
  </div>

js部分:

  <script src="js/vue.js"></script>
   <script>
        Vue.component('father',{
         template:`
        <div>
            <h3>这是父元素</h3>
            <child v-bind:number='num'></child>
            <button @click="add">点击加1</button>
        </div>
    `,
    data:function(){
        return{
            num:1
        }
    },
    methods:{
        add:function(){
            this.num++
        }
    }
    
})
//子组件
Vue.component('child',{
    props:['number'],
    template:`
        <div>
            <h5>这是子元素</h5>
            <a href="#">{{number}}</a>
        </div>
    `
})
new Vue({
    el:"#itany",
    data:{}
})

</script>
效果图:


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • "茶者,南方之嘉木也,一尺二尺,乃至数十尺。其巴山峡川有两人合抱者,伐而掇之,其树如瓜芦,叶如栀子,花如白蔷薇,实...
    逸行客阅读 497评论 16 3
  • 微信支付,我大部分参考的是在 code4app找的demo。感谢作者。www.code4app.com/ios/支...
    whereandhere阅读 589评论 0 1
  • 白露一过,老妈就急着打电话,等着我们双休回家打核桃。 偏偏周六早上7点钟,雨不紧不慢地下着,赶回家...
    书海琴声阅读 1,225评论 2 1
  • 关注互联网,关注硅谷堂。想了解更多关于互联网岗位知识的信息,关注微信公众号:硅谷堂(ID:guigutang)或下...
    硅谷堂阅读 353评论 0 1
  • 判断一个对象是否为空对象,本文给出三种判断方法: 最常见的思路,for...in...遍历属性,为真则为“非空数组...
    侬姝沁儿阅读 40,909评论 6 12