【移動(dòng)應(yīng)用開發(fā)技術(shù)】小程序使用自定義組件的示例_第1頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】小程序使用自定義組件的示例_第2頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】小程序使用自定義組件的示例_第3頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】小程序使用自定義組件的示例_第4頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】小程序使用自定義組件的示例_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

【移動(dòng)應(yīng)用開發(fā)技術(shù)】小程序使用自定義組件的示例

在下給大家分享一下小程序使用自定義組件的示例,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!先來上圖這個(gè)是一個(gè)購物車的數(shù)量組件。主要思路:

1、可以手動(dòng)的輸入具體的數(shù)量

2、可自定義設(shè)置最小值、和最大值。當(dāng)是最小值時(shí),“-”號(hào)置灰,并不可點(diǎn)擊。當(dāng)是最大值時(shí),“+”號(hào)置灰,并不可點(diǎn)擊。

3、當(dāng)手動(dòng)輸入“0”開頭的數(shù)字時(shí),自行過濾,禁止輸入,只值輸入非0數(shù)字。

4、當(dāng)手動(dòng)輸入數(shù)字大于最大值時(shí),輸入框失去焦點(diǎn),默認(rèn)將輸入值置為最大值?;蛘弋?dāng)手動(dòng)輸入數(shù)字小于最小值時(shí),輸入框失去焦點(diǎn),默認(rèn)將輸入值置為最小值

5、如果屬性值minNum最小值、或者maxNum最大值設(shè)置為NaN,則表示最小值和最大值的大小沒有輸入的限制

6、默認(rèn)最小值和最大值是沒有限制的,可以隨便輸入一、使用自定義組件的方式1、js文件中:輸入框數(shù)值變化最終響應(yīng)的函數(shù)

showNumber:

function

(e)

{

var

num

=

e.detail.num

},2、json文件中:{

"usingComponents":

{

/**

*

key:自定義組件的別名,在使用組件時(shí)用到。相當(dāng)于Android自定義控件在xml文件中的申明的命名空間

*

value:

自定義組件的全路徑

*/

"component-option-num":

"/component/optionNumber-component/optionNumber-component"

}

}3、wxml文件中:1、這里設(shè)置了最小值是0,最大值是20。2、bindoptionNum:是由bind+"optionNum"自定義組件回調(diào)函數(shù)的名稱組成。當(dāng)自定義組件的函數(shù)回調(diào)是,這個(gè)屬性指定的方法bindoptionNum將被響應(yīng)。并可以獲取傳入的值<component-option-num

bindoptionNum="showNumber"

minNum="0"

maxNum="20"></component-option-num>一、自定義組件的定義1、對(duì)外提供的自定義屬性值

/**

*

組件的屬性列表

*/

properties:

{

//最小值

minNum:{

type:Number,

value:

NaN

},//最大值

maxNum:{

type:Number,

value:NaN

},

},2、組件內(nèi)部使用的數(shù)據(jù)

/**

*

組件的初始數(shù)據(jù)

*/

data:

{

num:

0,

//輸入框顯示的數(shù)量

disabledMin:

false,

//"-"是否可點(diǎn)擊,true

不能點(diǎn)擊

disabledMax:false

//"+"是否可點(diǎn)擊,true

不能點(diǎn)擊

},3、增加數(shù)量方法

_add:

function

(e)

{

let

num

=

parseInt(this.data.num)

+

1

if

(this.checkIsMaxNum(num))

{

/**

*

大于最大數(shù)值,將輸入框的值設(shè)置為最大值,

*

且"+"不能點(diǎn)擊、"-"可點(diǎn)擊

*/

num

=

this.data.maxNum

this.data.disabledMax

=

true

this.data.disabledMin

=

false

}else

{

this.data.disabledMin

=

false

this.data.disabledMax

=

false

}

this.setData({

num:

num,

disabledMin:

this.data.disabledMin,

disabledMax:

this.data.disabledMax

})

//回調(diào)optionNum方法,將輸入框num值傳遞給使用該組件的函數(shù)

this.triggerEvent('optionNum',

{

num:

num

})

},4、減少數(shù)量

_reduce:

function

(e)

{

let

num,

disabledMin,

disabledMax

num

=

parseInt(this.data.num)

-

1

if

(this.checkIsMinNum(num))

{

//小于最小數(shù)

/**

*

小于最小數(shù)值,將輸入框的值設(shè)置為最小值,

*

且"-"不能點(diǎn)擊、"+"可點(diǎn)擊

*/

num

=

this.data.minNum

disabledMin

=

true

disabledMax

=

false

}else{

disabledMin

=

false

disabledMax

=

false

}

this.setData({

num:

num,

disabledMin:

disabledMin,

disabledMax:

disabledMax

})

//回調(diào)optionNum方法,將輸入框num值傳遞給使用該組件的函數(shù)

this.triggerEvent('optionNum',{num:num})

},5、手動(dòng)輸入數(shù)量

_input:

function

(e)

{

let

val

=

e.detail.value

//1、先用正則校驗(yàn)輸入的第一個(gè)數(shù)字,當(dāng)手動(dòng)輸入“0”開頭的數(shù)字時(shí),自行過濾,禁止輸入,只值輸入非0數(shù)字

var

num

=

val.replace(/^[0]+[0-9]*$/gi,

"")

/**

*

大于最大數(shù)值,將輸入框的值設(shè)置為最大值,且"+"不能點(diǎn)擊、"-"可點(diǎn)擊。反之亦然

*/

if

(this.checkIsMinNum(num))

{

//小于最小數(shù)

this.data.disabledMin

=

true

this.data.disabledMax

=

false

}

else

if

(this.checkIsMaxNum(num))

{

//大于最大數(shù)

this.data.disabledMax

=

true

this.data.disabledMin

=

false

}

else

{

this.data.disabledMin

=

false

this.data.disabledMax

=

false

}

this.setData({

num:

num,

disabledMin:

this.data.disabledMin,

disabledMax:this.data.disabledMax

})

this.triggerEvent('optionNum',

{

num:

num

})

},6、失去焦點(diǎn)

_blur:function(e){

let

val

=

e.detail.value

let

num

=

val.replace(/^[0]+[0-9]*$/gi,

"")

let

disabledMin,

disabledMax

if

(this.checkIsMinNum(num))

{

//輸入的數(shù)量

小于最小的數(shù),則輸入框顯示最小值

num

=

this.data.minNum

disabledMin

=

true

disabledMax

=

false

}

else

if

(this.checkIsMaxNum(num))

{

//輸入的數(shù)量

大于最大的數(shù),則輸入框顯示最大值

this.data.disabledMax

=

true

num

=

this.data.maxNum

disabledMin

=

false

disabledMax

=

true

}

else

{

//輸入的數(shù)量

大于最小的數(shù),則輸入框顯示輸入值

disabledMin

=

false

disabledMax

=

false

}

this.setData({

num:

num,

disabledMin:

disabledMin,

disabledMax:

disabledMax

})

this.triggerEvent('optionNum',

{

num:

num

})

},附自定義組件的全部代碼//

component/optionNumber-component/optionNumber-component.jsComponent({

/**

*

組件的屬性列表

*/

properties:

{

minNum:{

type:Number,

value:

NaN

},

maxNum:{

type:Number,

value:NaN

},

},

/**

*

組件的初始數(shù)據(jù)

*/

data:

{

num:

0,

disabledMin:

false,

disabledMax:false

},

lifetimes:{

//

初始化數(shù)據(jù)

attached:function(){

let

num,

disabledMin,

disabledMax

if

(this.checkIsMinNum(this.data.num))

{

//小于最小數(shù)

num

=

this.data.minNum

disabledMin

=

true

disabledMax

=

false

}

else

if

(this.checkIsMaxNum(this.data.num)){

//大于最大數(shù)

num

=

this.data.maxNum

disabledMax

=

true

disabledMin

=

false

}else

{

num

=

this.data.num

disabledMin

=

false

disabledMax

=

false

}

this.setData({

num:

num,

disabledMin:

disabledMin,

disabledMax:

disabledMax

})

},

},

/**

*

組件的方法列表

*/

methods:

{

//

減少數(shù)量

_reduce:

function

(e)

{

//

console.log("_reduce======",

this.data.maxNum)

let

num,

disabledMin,

disabledMax

num

=

parseInt(this.data.num)

-

1

if

(this.checkIsMinNum(num))

{

//小于最小數(shù)

num

=

this.data.minNum

disabledMin

=

true

disabledMax

=

false

}else{

disabledMin

=

false

disabledMax

=

false

}

this.setData({

num:

num,

disabledMin:

disabledMin,

disabledMax:

disabledMax

})

//

console.log("disabledMin======",

this.data.disabledMin)

this.triggerEvent('optionNum',{num:num})

},

//

增加數(shù)量

_add:

function

(e)

{

let

num

=

parseInt(this.data.num)

+

1

//

console.log("_add======",

this.data.maxNum)

if

(this.checkIsMaxNum(num))

{

//大于最大數(shù)

num

=

this.data.maxNum

this.data.disabledMax

=

true

this.data.disabledMin

=

false

}else

{

this.data.disabledMin

=

false

this.data.disabledMax

=

false

}

this.setData({

num:

num,

disabledMin:

this.data.disabledMin,

disabledMax:

this.data.disabledMax

})

this.triggerEvent('optionNum',

{

num:

num

})

},

//

手動(dòng)輸入數(shù)量

_input:

function

(e)

{

let

val

=

e.detail.value

var

num

=

val.replace(/^[0]+[0-9]*$/gi,

"")

if

(this.checkIsMinNum(num))

{

//小于最小數(shù)

this.data.disabledMin

=

true

this.data.disabledMax

=

false

}

else

if

(this.checkIsMaxNum(num))

{

//大于最大數(shù)

this.data.disabledMax

=

true

this.data.disabledMin

=

false

}

else

{

this.data.disabledMin

=

false

this.data.disabledMax

=

false

}

this.setData({

num:

num,

disabledMin:

this.data.disabledMin,

disabledMax:this.data.disabledMax

})

this.triggerEvent('optionNum',

{

num:

num

})

},

//

失去焦點(diǎn)

_blur:function(e){

//

console.log("_confirm======")

let

val

=

e.detail.value

let

num

=

val.replace(/^[0]+[0-9]*$/gi,

"")

let

disabledMin,

disabledMax

if

(this.checkIsMinNum(num))

{

//輸入的數(shù)量

小于最小的數(shù),則輸入框顯示最小值

num

=

this.data.minNum

disabledMin

=

true

disabledMax

=

false

}

else

if

(this.checkIsMaxNum(num))

{

//輸入的數(shù)量

大于最大的數(shù),則輸入框顯示最大值

this.data.disabledMax

=

true

num

=

this.data.maxNum

disabledMin

=

false

disabledMax

=

true

}

else

{

//輸入的數(shù)量

大于最小的數(shù),則輸入框顯示輸入值

disabledMin

=

false

disabledMax

=

false

}

this.setData({

num:

num,

disabledMin:

disabledMin,

disabledMax:

disabledMax

})

this.triggerEvent('optionNum',

{

num:

num

})

},

//

檢查是否是最大數(shù)

checkIsMaxNum:

function

(checkNum)

{

return

this.data.maxNum

!=

"NaN"

&&

checkNum

>=

this.data.maxNum

},

//

檢查是否是最小數(shù)

checkIsMinNum:

function

(checkNum)

{

return

this.data.minNum

!=

"NaN"

&&

checkNum

<=

this.data.minNum

}

}

})<view

class='optionView'>

<button

class="item"

bindtap="_reduce"

disabled="{{disabledMin}}"

style="border:0;background:white"

plain='true'>

<image

class="imgReduce"

src="{{disabledMin

?

'/images/icon/ic_reduce_grey.png'

:

'/images/icon/ic_reduce.png'}}"></image>

</button>

<view

class="space">|</view>

<view

class="item">

<input

class="inputNum"

type='number'

maxlength='3'

bindinput="_input"

value="{{num}}"

placeholder="0"

confirm-type="確認(rèn)"

bindblur="_blur"

placeholder-style="font-size:26rpx;color:#C81432"></input>

</view>

<view

class="space">|</view>

<button

class="item"

bindtap="_add"

disabled="{{disabledMax}}"

style="margin-left:6rpx;border:0;background:white"

plain='true'>

<image

class="imgAdd"

src="{

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論