摘要:監(jiān)聽(tīng)的回調(diào)里,在使用時(shí)改變,是觸發(fā)自定義事件,用于告知父組件數(shù)字輸入框的值有所變化。組件實(shí)例組件實(shí)例標(biāo)簽頁(yè)組件每個(gè)標(biāo)簽頁(yè)的主體內(nèi)容由使用組件的父級(jí)控制,這部分是一個(gè),而且的數(shù)量決定標(biāo)簽切換按鈕的數(shù)量。
查看原文站點(diǎn),更多擴(kuò)展內(nèi)容及更佳閱讀體驗(yàn)!實(shí)戰(zhàn):常用組件的開(kāi)發(fā)
數(shù)字輸入框只能輸入數(shù)字,而且有兩個(gè)快捷按鈕,可以直接減1或加1。除此之外,還可以設(shè)置初始值、最大/小值,在數(shù)值改變時(shí),觸發(fā)一個(gè)自定義事件來(lái)通知父組件。
目錄文件:
index.html 入口頁(yè)
input-number.js 數(shù)字輸入框組件
index.js 根實(shí)例
先在template里定義組件的根節(jié)點(diǎn),因?yàn)槭仟?dú)立組件,所以應(yīng)該對(duì)每個(gè)prop進(jìn)行校驗(yàn)。
接下來(lái),先在父組件引入input-number組件。
value是一個(gè)關(guān)鍵的綁定值,使用v-model。大多數(shù)的表單組件都應(yīng)該有一個(gè)v-model,比如輸入框、單選框、多選框、下拉選擇器等。
Vue組件時(shí)單向數(shù)據(jù)流,無(wú)法從組件內(nèi)部直接修改prop value的值。
解決辦法是給組件聲明一個(gè)data,默認(rèn)引用value的值,然后在組件內(nèi)部維護(hù)這個(gè)data。
Vue.component("input-number", { data() { return { currentValue: this.value } } });
這樣只解決了初始化時(shí)引用父組件value的問(wèn)題,但是如果從父組件修改了value,input-number組件的currentValue也要一起更新。
監(jiān)聽(tīng)(watch),watch選項(xiàng)用來(lái)監(jiān)聽(tīng)某個(gè)prop或data的改變,當(dāng)它們發(fā)生變化時(shí),就會(huì)觸發(fā)watch配置的函數(shù),從而完成業(yè)務(wù)邏輯。
從父組件傳遞過(guò)來(lái)的value可能不符合當(dāng)前條件(大于max,或小于min),所以在methods中寫(xiě)了一個(gè)方法updateValue,用來(lái)過(guò)濾出一個(gè)正確的currentValue。
watch監(jiān)聽(tīng)的數(shù)據(jù)的回調(diào)函數(shù)有2個(gè)參數(shù)可用,第一個(gè)是新的值,第二個(gè)是舊的值。
在回調(diào)函數(shù)里,this指向當(dāng)前組件實(shí)例。所以可以直接調(diào)用this.updateValue(),因?yàn)閂ue代理了props、data、computed及methods。
監(jiān)聽(tīng)currentValue的回調(diào)里,this.$emit("input",val)在使用v-model時(shí)改變value,this.$emit("on-change",val)是觸發(fā)自定義事件on-change,用于告知父組件數(shù)字輸入框的值有所變化。
在生命周期mounted鉤子里也調(diào)用了updateValue()方法,是因?yàn)榈谝淮纬跏蓟瘯r(shí),也對(duì)value進(jìn)行了過(guò)濾。
input綁定了數(shù)據(jù)currentValue和原生的change事件,在句柄handleChange函數(shù)中,判斷了當(dāng)前輸入的是否時(shí)數(shù)字。
See the Pen Vue組件實(shí)例 by whjin (@whjin) on CodePen.
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/108028.html
摘要:我們想要在中做到子傳參給父,那我們的父組件就要像子組件伸出小偷之手。所在組件的更新時(shí)調(diào)用,但是可能發(fā)生在其子更新之前。指令所在組件的及其子全部更新后調(diào)用。 視頻教程 由于思否不支持視頻鏈接 視頻請(qǐng)移步 http://www.henrongyi.top 你能學(xué)到什么 二檔視頻當(dāng)然要比一檔視頻難一點(diǎn),如果前面的內(nèi)容還沒(méi)有消化完畢的話,還是建議大家繼續(xù)消化前面的內(nèi)容,然后再看接下來(lái)的部分。...
摘要:我們想要在中做到子傳參給父,那我們的父組件就要像子組件伸出小偷之手。所在組件的更新時(shí)調(diào)用,但是可能發(fā)生在其子更新之前。指令所在組件的及其子全部更新后調(diào)用。 視頻教程 由于思否不支持視頻鏈接 視頻請(qǐng)移步 http://www.henrongyi.top 你能學(xué)到什么 二檔視頻當(dāng)然要比一檔視頻難一點(diǎn),如果前面的內(nèi)容還沒(méi)有消化完畢的話,還是建議大家繼續(xù)消化前面的內(nèi)容,然后再看接下來(lái)的部分。...
摘要:本文大家了解如何開(kāi)發(fā)一個(gè)框架。偽組件化我們知道,組件化開(kāi)發(fā)的目的是解耦功能,提高代碼復(fù)用率和開(kāi)發(fā)效率,進(jìn)而加快項(xiàng)目開(kāi)發(fā)周期與產(chǎn)品發(fā)布速度。公司自有的庫(kù)一般不可能發(fā)布到倉(cāng)庫(kù)。這樣我們就實(shí)現(xiàn)了插件的開(kāi)發(fā)。主要就是利用這個(gè)特性開(kāi)發(fā)的。 本文大家了解如何開(kāi)發(fā)一個(gè)Vue UI框架。Vue UI框架demo 源碼地址: https://github.com/xubaodian/... 。 平時(shí)在項(xiàng)...
摘要:并總結(jié)經(jīng)典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快速搭建項(xiàng)目。 本文是關(guān)注微信小程序的開(kāi)發(fā)和面試問(wèn)題,由基礎(chǔ)到困難循序漸進(jìn),適合面試和開(kāi)發(fā)小程序。并總結(jié)vue React html css js 經(jīng)典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快...
閱讀 1079·2021-11-18 10:07
閱讀 2492·2021-10-14 09:42
閱讀 5503·2021-09-22 15:45
閱讀 672·2021-09-03 10:29
閱讀 3575·2021-08-31 14:28
閱讀 1984·2019-08-30 15:56
閱讀 3121·2019-08-30 15:54
閱讀 1101·2019-08-29 11:32