Vue組件(Component)

前言:

沒有比人更高的山,沒有比腳更長的路

--------------------------------正文---------------------------------

注冊組件

全局

   Vue.component('my-com',{
      template: '',
      data(){return{xxx:xxx}}
   });

局部

  new Vue({
    el:'',
    data:{},
    components: {
       xxx: {
          template:'',
          data(){return {xxx:xxx}}
       }
    }
  })

組件之間數(shù)據(jù)傳遞

一、父組件給子組件數(shù)據(jù)(props)

  eg:
    <div id="box">
      <my-head v-for="(item,index) in atitle" :key="index" :title="item"></my-head> 
    </div>
    <script src="js/vue.js"></script>
    <script type="x-template" id="my-head">
      <div>
        <h2>{{title}}</h2>
        <p v-for="(item,index) in num" :key="index">{{item}}</p>
      </div>
    </script>
    <script type="text/javascript">
      new Vue({
        el:'#box',
        data:{
          atitle:['標(biāo)題一','標(biāo)題二','標(biāo)題三']
        },
        components: {
          'myHead':{
            props: {
              title:String
            },
            template:'#my-head',
            data(){
              return{
                num:[1,2,3]
              }            
            }
          }       
        }
      });
    </script>

二、子組件給父組件數(shù)據(jù)

使用 $on(eventName) 監(jiān)聽事件
使用 $emit(eventName) 觸發(fā)事件

  eg:
    <div id="box">
      {{count}}
      <my-head v-on:emitnum="onnum"></my-head>
    </div>
    <script type="x-template" id="my-head">
      <div>
        <input type="number" v-model="num" @change="changeNum">
      </div>
    </script>
    <script src="js/vue.js"></script>
    <script type="text/javascript">
      new Vue({
        el:'#box',
        data:{
          count:0
        },
        methods:{
          onnum(num){
            this.count=num;
          }
        },
        components:{
          'myHead':{
           template:'#my-head',
           data(){
              return{
                num:0
              }
            },
           methods:{
             changeNum(){
                this.$emit('emitnum',this.num)
             }
           }
         }
       }
     });
   </script>

三、同級(jí)組件傳遞數(shù)據(jù)

  eg:
    <div id="box1">
      {{count}}
      <button>按鈕</button>
    </div>
    <div id="box2">
      {{count}}
      <button @click="change">按鈕</button>
    </div>
    <script src="js/vue.js"></script>
    <script type="text/javascript">
      var oV=new Vue();
      new Vue({
        el:'#box1',
        data:{
          count:1
        },
        created(){
          var _this=this;
          oV.$on('count',function(num){
            _this.count=num;
          })
        }
      });
      new Vue({
        el:'#box2',
        data:{
          count:5
        },
        methods:{
          change(){
            oV.$emit('count',this.count);
          }
        }
      });
    </script>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容