摘要:綁定到子組件屬性綁定到父組件屬性在子組件模板內(nèi)將指令綁定到子組件屬性列表第一項(xiàng),由于父組件找不到屬性,將不會(huì)顯示。哪都通快遞龍虎山天師府曜星社內(nèi)容分發(fā)中的被插入中,并且因?yàn)橹械闹噶疃M(jìn)行迭代,迭代之后通過(guò)獲取上的屬性數(shù)據(jù)。
組件的作用域(一)
父組件模板的內(nèi)容在父組件作用域內(nèi)編譯;子組件模板的內(nèi)容在子組件作用域內(nèi)編譯。
父子組件的編譯相互獨(dú)立,編譯時(shí)只能使用各自作用域中的屬性和方法,例如,你不可以在父組件模板內(nèi),將一個(gè)指令綁定到子組件的屬性或方法上。如果這么做控制臺(tái)會(huì)報(bào)一個(gè)屬性未定義的錯(cuò)誤。
如果想要綁定一個(gè)指令以便控制子組件的行為,那么你可以在子組件的模板內(nèi),將一個(gè)指令綁定到子組件的屬性或方法上;或者在父組件的模板內(nèi),將指令綁定到父組件的屬性或方法上。
new Vue({ el: "#app-2", data: { makeChildShow: true }, components: { "component-2-1": { template: "I am an sub component.", data: function () { return { childIsShow: true } } }, "component-2-2": { template: "I am an sub component.", data: function () { return { childIsShow: true } } } } })
- 綁定到子組件屬性:
- 綁定到父組件屬性:
- 在子組件模板內(nèi)將指令綁定到子組件屬性:
列表第一項(xiàng),由于父組件找不到屬性childIsShow,將不會(huì)顯示。
默認(rèn)情況下的內(nèi)容分發(fā)將父組件的內(nèi)容插入子組件模板的方式,我們稱為內(nèi)容分發(fā)。
默認(rèn)情況下,在子組件中插入的父組件內(nèi)容是不顯示的。
new Vue({ el: "#app-1", data: { message: "I come from parent." }, components: { "component-1": { template: "I am an sub component.
", } } })
{{ message }}
內(nèi)容分發(fā)失敗,message不會(huì)顯示。
單個(gè)插口如果想使用內(nèi)容分發(fā),將父組件內(nèi)容插入到子組件的模板中,必須在子組件的模板內(nèi)標(biāo)記一個(gè)
如果父組件沒(méi)有待分發(fā)的內(nèi)容,備選內(nèi)容成為最終渲染的結(jié)果。
new Vue({ el: "#app-3", components: { "component-3": { template: "
具名插口(多個(gè)插口)父組件標(biāo)題
父組件插入內(nèi)容
單插口模式做內(nèi)容分發(fā),只能一股腦把套入子模板的內(nèi)容插入到有
而具名插口在內(nèi)容和slot上都做上標(biāo)記,對(duì)應(yīng)的內(nèi)容只能分發(fā)到對(duì)應(yīng)的slot上。
標(biāo)記內(nèi)容用slot="tag"; 標(biāo)記slot用
new Vue({ el: "#app-4", components: { "component-4": { template: "" } } })
我來(lái)組成頭部
沒(méi)被標(biāo)記的slot都我插
我來(lái)組成腿部
以上定義了兩個(gè)個(gè)不具名的插口,雖然這里顯示正確,但是控制臺(tái)報(bào)錯(cuò),說(shuō)定義重復(fù)的默認(rèn)插口會(huì)有不預(yù)期的錯(cuò)誤
組件作用域(二)根據(jù)具名插口,再來(lái)看個(gè)組件作用域的例子
new Vue({ el: "#app-7", methods: { parentMethod: function () { console.log("It is the parent"s method"); } }, components:{ "component-7":{ methods:{ childMethod: function(){ console.log("It is the child"s method") } }, template:" " } } })
內(nèi)容分發(fā)部分①|(zhì) 內(nèi)容分發(fā)部分②|
內(nèi)容分發(fā)部分屬于父組件作用域,因此點(diǎn)擊按鈕的內(nèi)容分發(fā)部分,會(huì)調(diào)用父組件方法,輸出"It is the parent"s method"。
子組件模板定義屬于子組件作用域,點(diǎn)擊這個(gè)部分,會(huì)調(diào)用子組件方法,輸出"It is the child"s method"
在內(nèi)容分發(fā)的過(guò)程中,父組件分發(fā)的內(nèi)容可以使用定義在子組件模板
特殊的,在標(biāo)簽中使用slot-scope,自身是不會(huì)在頁(yè)面上顯示,只起到傳遞數(shù)據(jù)媒介的作用。
new Vue({ el: "#app-5", components: { "component-5":{ template: "" } } })
{{slot_data_obj.slotvala}} {{slot_data_obj.slotvalb}}
由于slot-scope的值本質(zhì)上只是個(gè)javascript對(duì)象,因此可以使用es6的解構(gòu)語(yǔ)法進(jìn)行
以上又可以怎么寫
{{slotvala}} {{slotvalb}}插口作用域應(yīng)用在列表上
插口不僅可以通過(guò)自身屬性傳遞數(shù)據(jù)給分發(fā)的內(nèi)容,還可以在其上定義v-for指令,從而將迭代的特性也傳遞給分發(fā)的內(nèi)容。
new Vue({ el: "#app-6", components: { "component-6":{ data:function(){ return { items: [ {id:1,text:"哪都通快遞"}, {id:2,text:"龍虎山天師府"}, {id:3,text:"曜星社"} ] } }, template: "
{{ id+"、"+text }}
內(nèi)容分發(fā)中的被插入slot中,并且因?yàn)?b>slot中的v-for指令而進(jìn)行迭代,迭代之后通過(guò)slot-scope獲取slot上的屬性數(shù)據(jù)。
內(nèi)聯(lián)模板當(dāng)使用子組件的內(nèi)聯(lián)特性——inline-template時(shí),父組件的內(nèi)容分發(fā)部分就被解釋為子組件的模板,而子組件的template屬性也將被這個(gè)部分取代(取代后template失效),并且作用域也屬于子組件。
new Vue({ el:"#app-8", components:{ "component-8":{ template:"..."http://全部被替換 data:function(){ return { childMsg:"child"s data" } } } } })
這些將作為組件自身的模板。
而非父組件透?jìng)鬟M(jìn)來(lái)的內(nèi)容。
子組件數(shù)據(jù): {{ childMsg }}
"child"s data"來(lái)自子組件的childMsg
由于其特點(diǎn),在使用內(nèi)聯(lián)模板時(shí),最容易產(chǎn)生的誤區(qū)就是混淆作用域。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/93340.html
摘要:綁定到子組件屬性綁定到父組件屬性在子組件模板內(nèi)將指令綁定到子組件屬性列表第一項(xiàng),由于父組件找不到屬性,將不會(huì)顯示。哪都通快遞龍虎山天師府曜星社內(nèi)容分發(fā)中的被插入中,并且因?yàn)橹械闹噶疃M(jìn)行迭代,迭代之后通過(guò)獲取上的屬性數(shù)據(jù)。 組件的作用域(一) 父組件模板的內(nèi)容在父組件作用域內(nèi)編譯;子組件模板的內(nèi)容在子組件作用域內(nèi)編譯。 父子組件的編譯相互獨(dú)立,編譯時(shí)只能使用各自作用域中的屬性和方法,例...
摘要:假如以的作用域鏈作為類比,組件提供的對(duì)象其實(shí)就好比一個(gè)提供給子組件訪問(wèn)的作用域,而對(duì)象的屬性可以看成作用域上的活動(dòng)對(duì)象。所以,我借鑒了作用域鏈的思路,把當(dāng)成是組件的作用域來(lái)使用。 前言 Context被翻譯為上下文,在編程領(lǐng)域,這是一個(gè)經(jīng)常會(huì)接觸到的概念,React中也有。 在React的官方文檔中,Context被歸類為高級(jí)部分(Advanced),屬于React的高級(jí)API,但官方...
摘要:事件總線事件總線首先創(chuàng)建了一個(gè)名為的空的實(shí)例然后全局定義了組件最后創(chuàng)建了實(shí)例。在父組件模板中,子組件標(biāo)簽上使用指定一個(gè)名稱,并在父組件內(nèi)通過(guò)來(lái)訪問(wèn)指定名稱的子組件。 學(xué)習(xí)筆記:組件詳解 組件詳解 組件與復(fù)用 Vue組件需要注冊(cè)后才可以使用。注冊(cè)有全局注冊(cè)和局部注冊(cè)兩種方式。 全局注冊(cè) Vue.component(my-component, {}); 要在父實(shí)例中使用這個(gè)組件,必須要...
摘要:組件上一篇的表單輸入綁定使用組件注冊(cè)組件首先我們要?jiǎng)?chuàng)建一個(gè)實(shí)例要注冊(cè)一個(gè)全局組件,你可以使用。使用傳遞數(shù)據(jù)組件實(shí)例的作用域是孤立的。這意味著不能也不應(yīng)該在子組件的模板內(nèi)直接引用父組件的數(shù)據(jù)。 組件 上一篇:Vue的表單輸入綁定:https://segmentfault.com/a/11... 使用組件 注冊(cè)組件 首先我們要?jiǎng)?chuàng)建一個(gè)實(shí)例: new Vue({ el:.exp, ...
摘要:除了監(jiān)聽(tīng)事件外,還可以用于組件之間的自定義事件。它僅僅作為一個(gè)直接訪問(wèn)子組件的應(yīng)急方案,應(yīng)當(dāng)避免在模板或計(jì)算屬性中使用。將和合并成,會(huì)自動(dòng)去判斷是普通標(biāo)簽還是組件。子組件這里的狀態(tài)綁定的是父組件的數(shù)據(jù)。 查看原文站點(diǎn),更多擴(kuò)展內(nèi)容及更佳閱讀體驗(yàn)! 組件詳解 組件與復(fù)用 Vue組件需要注冊(cè)后才可以使用。注冊(cè)有全局注冊(cè)和局部注冊(cè)兩種方式。 全局注冊(cè) Vue.component(my-com...
閱讀 1105·2021-11-16 11:45
閱讀 3124·2021-10-13 09:40
閱讀 714·2019-08-26 13:45
閱讀 1188·2019-08-26 13:32
閱讀 2167·2019-08-26 13:23
閱讀 911·2019-08-26 12:16
閱讀 2823·2019-08-26 11:37
閱讀 1748·2019-08-26 10:32