摘要:全局混入對(duì)象不會(huì)覆蓋組件中的同名鉤子函數(shù)將混合為一個(gè)數(shù)組,因此都將被調(diào)用。而鉤子函數(shù)混入和組件中的不合并,而是都執(zhí)行,先執(zhí)行混入中的鉤子,再執(zhí)行組件中的。
組件引用 —— ref、$refs
給子組件或者原始DOM加上ref特性,就可以為其聲明引用標(biāo)記,添加引用后,可以在Javascript中使用vm|this.$refs.refname獲取子組件或原始DOM。若是原始DOM,則效果如document.querySelector(ele);若是子組件,則結(jié)果為一個(gè)VueComponent實(shí)例對(duì)象
Vue.component("component-1", { props: ["subProp"], data: function () { return { subData: "child"s data" } }, template: "子組件內(nèi)容" }) Vue.component("component-2", { template: "
獲取子組件data屬性[{{subDataVal}}]
獲取子組件prop特性[{{subPropVal}}]
獲取普通DOM元素值[{{commonDomVal}}]
- {{item.case}}
父組件數(shù)據(jù)定義:message、subPropVal、subDataVal、commonDomVal和一個(gè)數(shù)組items。
子組件一中定義有:propssubProp、datasubData
我們?cè)谝粋€(gè)組件
現(xiàn)在,就可以在綁定的按鈕單擊事件的回調(diào)中,通過this.$refs獲取組件和原始DOM的信息了,這些信息包括子組件的props、data和input元素的value值
如果和v-for一起使用,那么this.$refs.refname返回的是一個(gè)數(shù)組,引用原始DOM為一個(gè)原始DOM的數(shù)組,引用子組件為一個(gè)VueComponent數(shù)組,如在上面的例子中使用v-for&ref把輸出打印在控制臺(tái)如下:
混入(Mixins)在Vue中沒有通用的API來實(shí)現(xiàn)組件繼承的,但也有一些手段可以重復(fù)利用那些多個(gè)組件中相同的功能,比如這里的Mixin。當(dāng)多個(gè)組件有相同屬性或方法時(shí),可以抽取相同部分放入一個(gè)Mixins對(duì)象中。
Vue.mixin({ created: function () { console.log("全局混入對(duì)象") } }) var superPowersMixin = { data: function () { return { superPowers: false, //不會(huì)覆蓋組件中的`img` img: require("./angular.png"), } }, methods: { superMe: function () { this.$el.classList.add("super") this.superPowers = true }, goback: function () { this.$el.firstChild.innerText = "Forever Stay Here" } }, created: function () { this.$options.template = "" + "" + this.$options.template } } new Vue({ el: "#app-1", components: { vueImage: { data: function () { return { img: require("./vue.png") } }, template: "", methods: { goback: function () { this.$el.classList.remove("super") this.superPowers = false } }, //同名鉤子函數(shù)將混合為一個(gè)數(shù)組,因此都將被調(diào)用。混入對(duì)象的鉤子將在組件自身鉤子之前調(diào)用。 created: function () { this.$options.template = "" + this.$options.template + "" }, mixins: [superPowersMixin] }, reactImage: { data: function () { return { img: require("./react.png") } }, template: "", created: function () { this.$options.template = "" + this.$options.template + "" }, mixins: [superPowersMixin] } } })
在以上示例混入對(duì)象中,我們使用了屬性、模板、方法和鉤子函數(shù),對(duì)于不同的選項(xiàng)來說,我們有不同的合并規(guī)則。
總體上來講,當(dāng)選項(xiàng)是一個(gè)對(duì)象時(shí),我們就合并成一個(gè)大的對(duì)象,如果對(duì)象中有重名的屬性時(shí),我們就丟棄混入對(duì)象中的屬性。比如為組件vueImage添加混入時(shí),屬性img和方法goback()就被丟棄。而鉤子函數(shù)混入和組件中的不合并,而是都執(zhí)行,先執(zhí)行混入中的鉤子,再執(zhí)行組件中的。
利用混入可以模擬下繼承系統(tǒng)。
var SuperClass = { template: "{{message}}
", data() { return { message: "super class data" } }, methods: { superMethod() { this.message = "run super class method to change data" } } } var SubClass = { mixins: [SuperClass], template: "{{message}}
", methods: { superMethod() { this.message = "override super class method" }, subMethod() { this.message = "run sub class method to change data" } } } new Vue({ el: "#app-2", components: { SuperClass, SubClass } })
在這個(gè)例子中,為組件subClass混入了superClass,并從superClass那里繼承了屬性message,重寫了方法superMethod(),又添加了自己的方法subMethod()。感覺可以開發(fā)開發(fā)- -b。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/93396.html
摘要:全局混入對(duì)象不會(huì)覆蓋組件中的同名鉤子函數(shù)將混合為一個(gè)數(shù)組,因此都將被調(diào)用。而鉤子函數(shù)混入和組件中的不合并,而是都執(zhí)行,先執(zhí)行混入中的鉤子,再執(zhí)行組件中的。 組件引用 —— ref、$refs 給子組件或者原始DOM加上ref特性,就可以為其聲明引用標(biāo)記,添加引用后,可以在Javascript中使用vm|this.$refs.refname獲取子組件或原始DOM。若是原始DOM,則效果如...
摘要:系列專欄博主結(jié)合工作實(shí)踐輸出的,解決實(shí)際問題的專欄,朋友們看過來開發(fā)實(shí)戰(zhàn)嵌入式通用開發(fā)實(shí)戰(zhàn)嵌入式開發(fā)實(shí)戰(zhàn) 【系列專欄】:博主結(jié)合工作實(shí)踐輸出的,解決實(shí)際問題的專欄,朋友們看過來! 《QT開發(fā)實(shí)戰(zhàn)》 《嵌入式通用開發(fā)實(shí)戰(zhàn)》 《嵌入式Linux開發(fā)實(shí)戰(zhàn)
摘要:雜項(xiàng)補(bǔ)充雜項(xiàng)補(bǔ)充一塊與內(nèi)聯(lián)一塊與內(nèi)聯(lián)塊塊獨(dú)行顯示支持寬高,寬度默認(rèn)適應(yīng)父級(jí),高度默認(rèn)由子級(jí)或內(nèi)容撐開設(shè)置寬高后,采用設(shè)置的寬高內(nèi)聯(lián)內(nèi)聯(lián)同行顯示不支持寬高上下無效果,左右會(huì)起作用,不會(huì)影響它的高度,背景會(huì)影響。css雜項(xiàng)補(bǔ)充 一、塊與內(nèi)聯(lián) 1.塊 獨(dú)行顯示 支持寬高,寬度默認(rèn)適應(yīng)父級(jí),高度默認(rèn)由子級(jí)或內(nèi)容撐開 設(shè)置寬高后,采用設(shè)置的寬高 2.內(nèi)聯(lián) 同行顯示 不支持寬高 margin上下無...
閱讀 2597·2023-04-25 20:05
閱讀 2931·2023-04-25 17:56
閱讀 2239·2021-10-14 09:49
閱讀 2746·2019-08-29 15:10
閱讀 2952·2019-08-29 12:25
閱讀 452·2019-08-28 18:23
閱讀 793·2019-08-26 13:26
閱讀 1402·2019-08-23 18:21