摘要:第一次嘗試,感覺(jué)是個(gè)失敗經(jīng)歷了方法一代碼如下與子組件交流,一開(kāi)始就想到了用動(dòng)態(tài)綁定到子組件的這樣做我們可以很容易在父組件通過(guò)改變從而讓顯示但是怎么讓消失組件實(shí)例的作用域是孤立的。
本功能適用于瀏覽器
正在寫(xiě)一個(gè)web app,經(jīng)常用到comfirm,為了UI的整體一致,還是想自己寫(xiě)一個(gè)component。
第一次嘗試,感覺(jué)是個(gè)失敗經(jīng)歷了......
代碼如下
Document
與子組件交流,一開(kāi)始就想到了用props
動(dòng)態(tài)綁定isShow到子組件的props——ishow
這樣做我們可以很容易在父組件通過(guò)改變isShow從而讓dialog顯示
但是怎么讓dialog消失?
組件實(shí)例的作用域是孤立的。這意味著不能(也不應(yīng)該)在子組件的模板內(nèi)直接引用父組件的數(shù)據(jù)。要讓子組件使用父組件的數(shù)據(jù),我們需要通過(guò)子組件的props選項(xiàng)。
以上來(lái)自官網(wǎng)
不能直接在子組件改變prop這就有點(diǎn)麻煩了...
需要用this.$emit("hide")觸發(fā)hide事件,然后在組件上@hide="showDialog"監(jiān)聽(tīng)hide事件,再然后觸發(fā)父組件的showDialog方法
如果選項(xiàng)有兩個(gè),就要把上面的步驟再重復(fù)一次
完全超出了我的預(yù)計(jì),本來(lái)想復(fù)用,但是用一次寫(xiě)這么一大堆東西怎么復(fù)用呢...
所以還是另找辦法吧OTL
方法二代碼如下
Document
后來(lái),發(fā)現(xiàn)居然還有這個(gè)東西?。?/p>
盡管有 props 和 events ,但是有時(shí)仍然需要在 JavaScript 中直接訪問(wèn)子組件。為此可以使用 ref 為子組件指定一個(gè)索引 ID 。
ref 被用來(lái)給元素或子組件注冊(cè)引用信息。引用信息將會(huì)注冊(cè)在父組件的 $refs 對(duì)象上。如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素; 如果用在子組件上,引用就指向組件實(shí)例
以上來(lái)自官網(wǎng)
this.$refs.modal
居然能夠直接訪問(wèn)子組件!那直接在子組件處理一切不就好了啊!
點(diǎn)擊觸發(fā)dialog的函數(shù)就可以像是這樣
this.$refs.modal.show(function(){ console.log("yes");//這是選擇yes的回調(diào)函數(shù) },function(){ console.log("no");//這是選擇no的回調(diào)函數(shù) });
剩下的東西子組件自己解決!
hide:function(){ this.isShow = false; }, show:function(yescb,nocb){ this.isShow = true; this.yescb = yescb; this.nocb = nocb; }, yes:function(){ this.yescb(); }, no:function(){ this.nocb(); }
還很不完善,希望各位能給點(diǎn)建議OTL
PS:這個(gè)自用的comfirm為了在引入的時(shí)候少寫(xiě)東西,我就盡量吧css寫(xiě)到元素里了...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/82058.html
摘要:前言上回說(shuō)了組件組件開(kāi)發(fā)練習(xí)焦點(diǎn)圖切換的一個(gè)練習(xí)項(xiàng)目,這次換下口味,說(shuō)下的插件練手的項(xiàng)目。和組件開(kāi)發(fā)的目錄相比,區(qū)別就在于這個(gè)文件夾上。開(kāi)發(fā)過(guò)程把項(xiàng)目跑起來(lái)首先,先弄這個(gè)組件。最后還需要一個(gè)變量,控制彈窗是否顯示。 1.前言 上回說(shuō)了組件(vue組件開(kāi)發(fā)練習(xí)--焦點(diǎn)圖切換)的一個(gè)練習(xí)項(xiàng)目,這次換下口味,說(shuō)下vue的插件練手的項(xiàng)目。相對(duì)于現(xiàn)在之前的焦點(diǎn)圖切換的組件,這個(gè)可能就更簡(jiǎn)單了,基...
摘要:這是一段內(nèi)容標(biāo)題名稱(chēng)確定點(diǎn)擊確定后的回調(diào)函數(shù)確認(rèn)消息彈框提示用戶確認(rèn)其已經(jīng)觸發(fā)的動(dòng)作,并詢問(wèn)是否進(jìn)行此操作時(shí)會(huì)用到此對(duì)話框。。 初始化一個(gè)Vue項(xiàng)目 F:Test>vue init webpack Test1 ? Project name test1 ? Project description A Vue.js project ? Author Selience ? Vue buil...
摘要:這是一段內(nèi)容標(biāo)題名稱(chēng)確定點(diǎn)擊確定后的回調(diào)函數(shù)確認(rèn)消息彈框提示用戶確認(rèn)其已經(jīng)觸發(fā)的動(dòng)作,并詢問(wèn)是否進(jìn)行此操作時(shí)會(huì)用到此對(duì)話框。。 初始化一個(gè)Vue項(xiàng)目 F:Test>vue init webpack Test1 ? Project name test1 ? Project description A Vue.js project ? Author Selience ? Vue buil...
摘要:這是一段內(nèi)容標(biāo)題名稱(chēng)確定點(diǎn)擊確定后的回調(diào)函數(shù)確認(rèn)消息彈框提示用戶確認(rèn)其已經(jīng)觸發(fā)的動(dòng)作,并詢問(wèn)是否進(jìn)行此操作時(shí)會(huì)用到此對(duì)話框。。 初始化一個(gè)Vue項(xiàng)目 F:Test>vue init webpack Test1 ? Project name test1 ? Project description A Vue.js project ? Author Selience ? Vue buil...
閱讀 2301·2021-10-09 09:41
閱讀 1754·2019-08-30 15:53
閱讀 999·2019-08-30 15:52
閱讀 3451·2019-08-30 11:26
閱讀 778·2019-08-29 16:09
閱讀 3434·2019-08-29 13:25
閱讀 2269·2019-08-26 16:45
閱讀 1939·2019-08-26 11:51