vue組件全局注冊(cè)和局部注冊(cè)的實(shí)現(xiàn)

全局注冊(cè),注冊(cè)的組件需要在初始化根實(shí)例之前注冊(cè)了組件;

專(zhuān)注于為中小企業(yè)提供成都做網(wǎng)站、網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)喀喇沁免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

局部注冊(cè),通過(guò)使用組件實(shí)例選項(xiàng)注冊(cè),可以使組件僅在另一個(gè)組件或者實(shí)例的作用域中可用:

全局組件

js

Vue.component('tab-title',{
   props:['title'],
   template:'<li v-on:click="$emit(\'change\')">{{title}}</li>'
 })
 Vue.component('tab-content',{
   props:['content'],
   template:'<div>{{content}}</div>'
 })

局部組件demo:

html

<div id="app">
  <ul class="navTab">
   <li v-for="(navTab,index) in navTabs" is="tab-title" v-bind:info="navTab.text" v-bind:class="{active:navTab.isActive}" v-on:addactive="switchActive(index)"></li>
  </ul>
  <div class="tabContent">
   <div v-for="navTab in navTabs" is="tab-content" v-bind:content="navTab.tabContent" 
   v-bind:class="['tab-panel',{active:navTab.isActive}]" v-if="navTab.isActive"></div>
  </div>
  </div>

js

var app=new Vue({
      el: '#app',
     components: {
       'tab-title': {
        props:['info'],//接受父元素傳遞的參數(shù)
        template:'<li v-on:click="$emit(\'addactive\')">{{info}}</li>'//點(diǎn)擊時(shí)傳遞通過(guò)$emit子元素傳遞給父元素調(diào)用 addactive方法(不能使用駝峰寫(xiě)法)
        },
       'tab-content':{
         props:["content"],
        template:'<div>{{content}}</div>'
       }
     },
     methods:{
       switchActive:function(index){
        for(var i=0;i<this.navTabs.length;i++){
         this.navTabs[i].isActive=false;
        }
        this.navTabs[index].isActive=true;
        
       }
     },
     data:{
      navTabs:[
       {
        text:"tab1",
        isActive:true,
        tabContent:'this is tab1 content'
       },
       {
        text:"tab2",
        isActive:false,
        tabContent:'this is tab2 content'
       },
       {
        text:"tab3",
        isActive:false,
        tabContent:'this is tab3 content'
       }
      ]
     }
    });

組件實(shí)例的作用域是孤立的。這意味著不能再子組件的模板內(nèi)直接引用父組件的數(shù)據(jù)。要讓子組件可以使用父組件的數(shù)據(jù),我們需要通過(guò)子組件的props選項(xiàng)。

子組件要顯式地用 props 選項(xiàng)聲明它期待獲得的數(shù)據(jù)

在模板中,要?jiǎng)討B(tài)地綁定父組件的數(shù)據(jù)到字模板的props,與綁定到任何普通的HTMO特性相類(lèi)似。就是使用 v-bind。每當(dāng)父組件的數(shù)據(jù)變化時(shí),該變化也會(huì)傳遞給子組件:

所有的vuejs組件都是被擴(kuò)展的vue實(shí)例

每一個(gè)Vue實(shí)例都會(huì)代理這個(gè)實(shí)例的data屬性對(duì)象里的所有的屬性

所有的Vue實(shí)例本身保羅的屬性和方法,都以$開(kāi)頭來(lái)區(qū)別,對(duì)應(yīng)Vue.set

例如:

vm.$data

vm.$methods

vm.$watch

這個(gè)有利于和data屬性對(duì)象的數(shù)據(jù)來(lái)區(qū)分

多有的指令都以v-xxx形式存在:

以上這篇vue 組件 全局注冊(cè)和局部注冊(cè)的實(shí)現(xiàn)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持創(chuàng)新互聯(lián)。

分享標(biāo)題:vue組件全局注冊(cè)和局部注冊(cè)的實(shí)現(xiàn)
URL分享:http://www.muchs.cn/article38/geessp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、建站公司、面包屑導(dǎo)航、動(dòng)態(tài)網(wǎng)站、域名注冊(cè)、標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司