微信小程序自定義組件封裝及父子間組件傳值的方法
首先在我們可以直接寫(xiě)到需要的 page 中,然后再進(jìn)行抽取組件,自定義組件建議 wxzx-xxx 命名
官網(wǎng)地址:https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/
例如,我們封裝的組件名為 **wxzx-loadmore

wxzx-loadmore.wxml
<view hidden="{{response.length < 1}}">
<view class="weui-loadmore" hidden="{{is_loadmore}}">
<view class="weui-loading"></view>
<view class="weui-loadmore__tips">正在加載</view>
</view>
<view class="weui-loadmore weui-loadmore_line" hidden="{{!is_loadmore}}">
<text class="weui-loadmore__tips">{{tip}}</text>
</view>
</view>
這里就是把index.wxml中的需要封裝成組件的代碼原樣copy過(guò)來(lái)
wxzx-loadmore.js
Component({
/**
* 組件的屬性列表
*/
properties: {
response: {
type: String,
value: ''
},
is_loadmore: {
type: Boolean,
value: false
},
tip: {
type: String,
value: '我是有底線的'
}
},
/**
* 組件的初始數(shù)據(jù)
*/
data: {
},
/**
* 組件的方法列表
*/
methods: {
emit: function(data) {
// 自定義組件向父組件傳值
let val = data,
my_event_detail = {
val: val
}
// myevent自定義名稱事件,父組件中使用
this.triggerEvent('myevent', my_event_detail)
/*
在父組件中寫(xiě)上bind:myevent="get_emit",在父組件中就需要調(diào)用get_emit事件
*/
},
}
})
index.wxml 父組件
<wxzx-loadmore
response="{{comment_list}}"
is_loadmore="{{is_loadmore}}"
bind:myevent="get_emit"
></wxzx-loadmore>
<!-- 這就是在父組件中調(diào)用子組件,然后基于子組件傳值來(lái)在父組件中賦值 -->
index.js 中
// 接受子組件的傳值
get_emit: function (e) {
this.setData({
is_show: e.detail.val
})
},
index.json 這里需要引入組件,在哪個(gè)父頁(yè)面中引用子組件,就在哪個(gè)json文件中引入
{
"usingComponents": {
"wxzx-loadmore": "/component/wxzx-loadmore/wxzx-loadmore"
}
}
父組件向子組件傳參
聲明:A組件為父組件,B組件為子組件,以下是A組件向B組件傳參:
在A組件中引入B組件
在A組件的json中寫(xiě)入:
{
"component": true,
"usingComponents": {
"componentB": "../child2/child2"
}
}
在A組件的wxml中寫(xiě)入:
<view>我是組件A</view> <view> <view>子組件內(nèi)容:</view> <componentB paramAtoB='我是A向B中傳入的參數(shù)'/> </view>
在B組件的js中寫(xiě)入:
Component({
behaviors: [],
properties: {
paramAtoB:String
},
data: {
}, // 私有數(shù)據(jù),可用于模版渲染
// 生命周期函數(shù),可以為函數(shù),或一個(gè)在methods段中定義的方法名
attached: function () { },
moved: function () { },
detached: function () { },
methods: {
}
})
即在properties中定義A組件要傳過(guò)來(lái)的參數(shù)類型
在B組件的wxml中寫(xiě)入:
<view style='border:2px solid gray;'>
<view style='text-align:center;'>我是組件B</view>
<view>A中傳入的參數(shù):{{paramAtoB}}</view>
</view>
總結(jié): A組件向B組件傳參,實(shí)際上就是在A組件中引入B組件的時(shí)候,帶上一個(gè)屬性paramAtoB,并且給其賦值,然后B組件通過(guò)這個(gè)屬性名稱paramAtoB,獲取其值
子組件向父組件傳參
聲明:A組件為父組件,B組件為子組件,以下是B組件向A組件傳參:
要讓子組件給父組件傳參,首先得在父組件引入子組件的時(shí)候,加個(gè)觸發(fā)事件,如下:
在父組件A中wxml:
<view style='padding:20px;border:2px solid red;'>
<view style='text-align:center;'>我是組件A</view>
<view>
<view>A組件內(nèi)容:</view>
<view>B組件傳入?yún)?shù):{{paramBtoA}}</view>
<componentB paramAtoB='我是A向B中傳入的參數(shù)' bind:myevent="onMyEvent"/>
</view>
</view>
myevent就是綁定的觸發(fā)事件
在父組件A中js:
Component({
behaviors: [],
properties: {
},
data: {
}, // 私有數(shù)據(jù),可用于模版渲染
// 生命周期函數(shù),可以為函數(shù),或一個(gè)在methods段中定義的方法名
attached: function () { },
moved: function () { },
detached: function () { },
methods: {
onMyEvent:function(e){
this.setData({
paramBtoA: e.detail.paramBtoA
})
}
}
})
onMyEvent就是當(dāng)被子組件觸發(fā)時(shí)的函數(shù)
在子組件B中wxml:
<view style='border:2px solid gray;'>
<view style='text-align:center;'>我是組件B</view>
<view>A中傳入的參數(shù):{{paramAtoB}}</view>
<button bindtap='change'>向A中傳入?yún)?shù)</button>
</view>
button按鈕點(diǎn)擊事件一觸發(fā),就可以傳入?yún)?shù)進(jìn)入父組件A中,在子組件B中js:
Component({
behaviors: [],
properties: {
paramAtoB:String
},
data: {
}, // 私有數(shù)據(jù),可用于模版渲染
// 生命周期函數(shù),可以為函數(shù),或一個(gè)在methods段中定義的方法名
attached: function () { },
moved: function () { },
detached: function () { },
methods: {
change:function(){
this.triggerEvent('myevent', { paramBtoA:123});
}
}
})
this.triggerEvent就是按鈕點(diǎn)擊之后執(zhí)行的事件,觸發(fā)myevent事件,傳入?yún)?shù)paramBtoA進(jìn)入父組件
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
用JavaScript來(lái)美化HTML的select標(biāo)簽的下拉列表效果
這篇文章主要介紹了用JavaScript來(lái)美化HTML的select標(biāo)簽的下拉列表效果的方法,而且在多瀏覽器下的兼容效果也得到提升,需要的朋友可以參考下2015-11-11
js中Image對(duì)象以及對(duì)其預(yù)加載處理示例
現(xiàn)在的網(wǎng)頁(yè)中經(jīng)常會(huì)有一些圖像連接,當(dāng)鼠標(biāo)指向它的時(shí)候,圖像換成另外一幅圖像,它們都是先預(yù)讀圖像的,下面也有個(gè)不錯(cuò)的實(shí)例,感興趣的朋友可以參考下2013-11-11
正則表達(dá)式基本語(yǔ)法及表單驗(yàn)證操作詳解【基于JS】
這篇文章主要介紹了正則表達(dá)式基本語(yǔ)法及表單驗(yàn)證操作,較為詳細(xì)的分析了正則表達(dá)式的基本語(yǔ)法以及基于JS實(shí)現(xiàn)的表單正則驗(yàn)證操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-04-04
JS檢測(cè)是否可以訪問(wèn)公網(wǎng)服務(wù)器功能代碼
檢測(cè)AC是否放行成功,是否可以訪問(wèn)公網(wǎng)阿里云服務(wù)器。下面給大家分享JS檢測(cè)是否可以訪問(wèn)公網(wǎng)服務(wù)器功能代碼,需要的的朋友參考下吧2017-06-06
JS中浮點(diǎn)數(shù)精度問(wèn)題的分析與解決方法
在js中我們有時(shí)會(huì)遇到計(jì)算,通過(guò)加減乘除處理某些業(yè)務(wù),那么這時(shí)候如果不做任何處理,就會(huì)出現(xiàn)如下典型的精度丟失問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于JS中浮點(diǎn)數(shù)精度問(wèn)題的分析與解決方法,需要的朋友可以參考下2022-04-04
javascript小組件 原生table排序表格腳本(兼容ie firefox opera chrome)
javascript小組件 原生table排序表格腳本 兼容ie firefox opera chrome,需要的朋友可以參考下2012-07-07
js 將canvas生成圖片保存,或直接保存一張圖片的實(shí)現(xiàn)方法
下面小編就為大家分享一篇js 將canvas生成圖片保存,或直接保存一張圖片的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
js實(shí)現(xiàn)Tab選項(xiàng)卡切換效果
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)Tab選項(xiàng)卡切換效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10

