亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 小程序 > 正文

詳解微信小程序自定義組件的實現及數據交互

2020-03-21 15:51:08
字體:
來源:轉載
供稿:網友

簡單的自定義組件

本文的使用場景是:多個頁面都需要用到撥打電話功能,為減少代碼量、便于維護,所以自定義了一個組件,每個頁面直接調用即可。基本實現下圖樣式:

微信小程序,自定義組件,數據交互

下面我們來一步步的實現它:

step1:創建文件夾以及文件

首先創建一個components(名字可自?。┪募A,用于放置所有自定義的組件,

里面可以用右鍵自動創建的方式,新建一個Component組件,例如:

微信小程序,自定義組件,數據交互

創建之后的目錄結構為:

微信小程序,自定義組件,數據交互

其中callphone是我們本次要實現的撥打電話組件。

step2:組件的基本搭建

在callphone.wxml中:添加組件結構:

<view class="call" bindtap="callPhone"> <view class="phone">{{phone}}</view> <view>了解最新信息,免費咨詢</view> <view class="callIcon"></view></view>

在callphone.wxss中:添加組件樣式:

.call { display: block; padding: 18rpx 30rpx; width: 100%; color: #999; font-size: 24rpx; box-sizing: border-box; background: #ecf9e8; position: relative; border-radius: 10rpx;}.call .phone { color: #333; font-size: 40rpx;}.call .callIcon { width: 77rpx; height: 77rpx; position: absolute; top: 50%; margin-top: -38rpx; right: 30rpx; background-size: cover; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE0AAABNCAYAAADjCemwAAALaUlEQVR4Xu1ce3BU1Rn/fecmmxCIDwoqOI5PEmDvwlh8dQwkuyAx2Y3TqmDt+NbOtIpax9Y61VpatdM60hkr7Yzjo1U6rYJYdbOLEbI3RHwWamFvwKC2tpZgCxUhEpNN9nydc7MJm7DJ3t3cJYuz58/kO9/5zm/PPed7E8Zp1L82s4JixXMZslIQVUhghgCOZ3A5QOUAygB0AdxJoE4J7BPA+5J5J0G0s6t3a3j+ezvHQ3w6UovWtZ49VfT1NoDgBbMPoOljX5s7QBQBw5BFxcF1C97dM3ae6TnkFLQa47TSiVTewMxXg3ExAcWDIhF2E/A2g9qJ0B6XcicVF+0p5VinFhed2DP7C0zdPiGuyfJucpVzb99UTYgKZlQSuJKB88GYNsCPgV4QXiGiVQe5M9ji/ag7/fazo8gJaIvWn3GsS0y4lQi3AzRFiTawKQFuisdhrFvUtj07kQ/Nqtvgnq1p8EpQ7dAfhfcy45GY/OLRDRf9ff9Y1xk+31HQ6t466xjxReldzFhGwLGJxTYT0dOEnmeD3p17nd7AAL8Go2IKo+SbzHwtgHMSP9R+IqyUE7ofWnfBBwecWtsx0Opb3FeSpBVA4pMhrBdMDwZ90Y1OCWuXT0PEUy2J7wHjosSc3Sz4znBN25/s8hiNbsygNWycczrH+QmGutwBEDaRJu9sXLD9HScEHAuPQOvs8xAXK5hR1S8aRUijm4LV2/4xFr5jAs2/Ub8UcTwJ4DgAewTRXUFv9On+KyxvBjUYnmsl80MApgL4DBpuDFWbL2QrYVagzds8r/ikAz0rQFgGBhGwlovp26H50X3ZCpLref7XPMdTLz/OwGUgMBgrPzmm5M4t52zpzXTtjEFbvHXOxOJP5VowagH0ENH3G73RlZkuPF70AcOzjJkfBlACQlPvZHHZq3O3HcxEnoxAUy+UZFcIwHkAPmFCQ9hrbs5kwXygrTf0c4gRBHASgHcExfyZvOy2QbMAg6sVjFkAPpSM2nULzQ/zAYRsZKhr1s8UhCYAZ4KxQ4jYArvA2QLN+iT/JyPWCSNs1eKofXmR+Z9shM2nOZds0E+Ma2gCY646cb1fET47n2pa0KxLv7MnmLjDPtQkLvwyADbw41nACbxunThC0yflJQ3pHoe0oPkj+q8B3KruMMmoOpo/yZFOeeJT3ZS44x4N+czbslZuLT1M4nkwYkyoOhovfbvXQeJx2ASCCwKXj6bHjXjSlKYv4/KvSnEloluPJrXCLlDD6RLqyKNKARaa+OpIlsOIoAUinmZlGinFtdFnXp6tIEfbvEBEf14pwMrkavRFF6aSPyVoCeP7j8o0QjFV5rOm7/SPoiwH9HK7MrlY8LdSGfmHgWa5d7pK31PeCkF0fdAb/b3TguU7vwbDc51k/h2A3bKse+Zwt9JhoPkN/QEw7lHeipDXXJBnxveRwpv8hq4U+SoQHgx5zXuTFx4CmuVx1cr+qRyIVCTPzwf3zpFC6bBHoXX2edwn3mZgfyzedWqyB3gIaPXN7nuJ6H4Q1oe85uLxEjhf1vUb+qvKkcnMPw4vbHtgQK5B0KwgCE/8WPn0BajGMY/rcgh/tXspM12v3NDEKGXgIwIHpdBWrvNu+3e+gDRcDssDDG4BeO9BOnjKQLBmEDR/i2cJJK8GsDnkM891YiPqcy8pKluT5HYezvYzBl0X9kVfcmK9XPDwR/S/WDEHQUtDNdE1ao1B0ALNepAJAccUWQb5WzzrwZxS1xncICMmBC8MetuUGZN3Y0DhZUIw7DUvGQRNBXKpr3cXASwodrJdF8loO/Qb+lVgrLKJwt9CPvNsm7RHlCzhQ9zFAHFR8ckqIG2dNH9EvwHAk8lojlUyv6GryLfXLh8Jrlrna1Pehrwb9Yb+MjEaANwY8plP9YNm6KvAuIqIlzV6237jhNR+Q98HtgIutgYDt4d9pvKo5N0IGO5bmGklCH8Iec2rEyfNvcvKrdAwO1Rt7nBCan9EV2kBJXZ5EeF7jV7zEbv0R5JORfKFoDaAO0K+tpPJyt7pLWoHYXfIazqQlNK/HX9E/wjAqRlsLhDymSr+kJfDb+gdKneEi/sqyd/sWQLi1UR4sdFrfsMpif0RXUXWlRlmYwzVg2xMOOIkAUP/MzO+DqaldMgKoF+GvNG7nZImENGfYeBqW/wYt4UWmsqPlbfDb3h+AeYfKuuABjZHgm5orIkqy96R0dDiuUNK/pUNZr8N+cxbbNCNK0mgxXM9S1Yv5yqqN/Q3iXGB009+oMXzNZb8xig77WPi74a9bU+MKxo2F6+LuC8UoE1MeEudtPcYqGSpVYYXbXUsHbMufFaJKC1VqVWTRpDryZDPvMmmzONOVr9hbgWJeDsB7eSPeHYBPL2vKD69acGO3U5K54/ozwFYmpon3R/yRe9zcr1c8qptnTWtqE/rAKiD/BFdJbuVlxGXr/G2fe7kwnWGfoVgPJuS51HmflpiuCd1MXUC6FSg9QHQyvbOKlqzdE3cUdDeP6tE+7j0XwyckILvwbITefIad1vMyTVzxWvJ6iVa15QdCqt4Tk+a2kC94b6fmIa4iwc2Rhpf21jd9kyuNuok32Enrd+EKimKT3/B4TtNCZ0I+3+Q6kFgYFvYZ6o8irwfl7bOmtZj3Wnccej1LNYqw/Odez2TUag39J8QY3kqZJjoO2Fv9LF8R63+tbkV1Jt4Pesj+psE5/W0ZBAWN82Z6HLJHcw4JQU4n/eRPLvJu12dxrwdg3oa+vU0y9xx2iIYvvtAs76YCa8ke4uTaD4gjtU0Lty5K1vUrDQKjp8GKQ5ortjOl6va1Uvn2BhqEQxGoJy1PVNJGzA8K5k5pcmkqlZ6IQOZnrj65jlXEskfAdCT1uwh8FpNo7tfqjY/dgK5IbZnrrwcqQRdstrt6ppCKjnwwhE20slEt4VtRvX9EV05TG8eGRTeC4iLQ77olrECN9TLkSN/2khCLn59zgnFPfItAKePspEt0PDzcxeYLy4nyFR09RHPHQQ7DgHuQJfQQ4GxZZ4P8acpgfyRfrVDSnY7UbOU7le92Jh5msZaC0CjOykZn7LAeiFpEzTeFZf8X00IyVIugnqNiUS6tdT/ifDTRq+Z8vW2M/8wz60FWg5iBOmEsS7uPtkEwox0tA783wz5TE+2fEaIETgfjbIjYO0b7slF3bQWQI0d+uxpuDvka5uQ7fyU0ahcxD3tCqgSoaft7/4ZE/1A2cB252VCp5JYwj7TdmQsmbeKe8bZ1aH+NiTuqf4wgKZjEfZMdgWgwXBXSdDjYMzMcKod8paQz7Qdg01mOGKE3brXcpDLYWc3yTTzHptXPK2i52YpcR8RJmc6fyR6IXBNsMa0G+0fwmbUXI6cZQ1lsfMawz1pEuhGFUAGj6qapOVu5c62Ri/C8tSqy2gM0mYNWZ9ovuWnMYS/2V0Nja6ACp8BJ6ZFKZmAsEFO6L4s26ritPlpaq18z4RsMDwzmeR8luQB0QywPINAx3F/HKI0ker6GYB3WYinwi3bnsvmhCksVIGtrUxI624r5NwqGOzn3CrqQna3eskzzO627rb+Iv5CHYHdOoKBe7RQsZJhxYoCrlAblUVtlPUoFKrwUmo4hXpP9fj1l2Y7U++pYC5UFh9+2NKeNDWlUMM+FDhboFkPg+qWIF2toEK3BNugDQJX6MtxqGLFriFc6ACTVOZjF7TBx6HQaygTyA7RDu9qxUR3hQtdrdKDme/90zguVlgVwvnSPy0Z0kKnvvQHLCVFoSdklsANeoCHdR8FrC4yTar7KAuKOFGD5d+ozyLJvqO6++hwnAf63FKcr5GE2rR9bmXRnrgr1nlMUp/bA5os12KuchZf8j63qQ5poaPyGD7dgamH9e4mzBCsenervt2qf/dA727qJHCnJOwTnB+9u/8PGdpORDiwhy4AAAAASUVORK5CYII=);}

在callphone.js中:添加組件邏輯:

Component({ /**  * 組件的屬性列表  */ properties: { }, /**  * 組件的初始數據  */ data: {  phone: '400-010-9797' }, /**  * 組件的方法列表  */ methods: {  callPhone() {   wx.makePhoneCall({    phoneNumber: this.data.phone   })  } }})

step3:使用組件

我們要在index.wxml中使用該組件的話,要在index.json中進行聲明:(其中call-phone是組件的名稱,可以自取)

{ "usingComponents": {  "call-phone": "/components/CallPhone/callphone" }}

在index.wxml中引用組件:

<call-phone></call-phone>

完成以上幾個步驟,一個簡單的小程序自定義組件就完成了,運行結果如下:

微信小程序,自定義組件,數據交互

Page與Component數據交互

上面的例子中可以看到,電話號碼是在組件中的data中設置的,也就是每個頁面都是固定寫死的;但是如果要實現每個界面的號碼不一樣的話,此時就涉及到page往組件傳值的問題,可以這么修改:

1、page > component

方法1:page在引用組件時能通過屬性值設置,callphone.js在properties獲取:

<!--index.wxml--><call-phone phone="400-010-9797"></call-phone>// components/CallPhone/callphone.jsComponent({ properties: {  phone: String //簡寫  /*   phone: {   type: String, //類型,目前接受的類型包括:String, Number, Boolean, Object, Array, null(表示任意類型)   value: '', //初始值   observer: function(newVal, oldVal) {}  }  */ }, attached: function() {  console.log("this.properties.phone:" + this.properties.phone); //控制臺打印:"400-010-9797" }, //...})

方法2:page在引用組件時通data-xxx設置,callphone.js在this.dataset獲?。?/p>

<!--index.wxml--><call-phone data-tel="400-010-9797" ></call-phone>// components/CallPhone/callphone.jsComponent({ attached: function() {  console.log("this.dataset.tel:" + this.dataset.tel); //控制臺打印:"400-010-9797"  // 設置properties值用setData()  this.setData({   phone: this.dataset.tel  }); }, //...})

2、component > page

組件中的變量要傳到page頁面,可以通過事件觸發this.triggerEvent()來實行:

// components/CallPhone/callphone.jsComponent({ methods: {  callPhone() {   var myEventDetail = {    msg: '來自component的信息',    tel: '400-010-9797'   } // detail對象,提供給事件監聽函數   var myEventOption = {} // 觸發事件的選項   this.triggerEvent('myevent', myEventDetail, myEventOption)  } }})<!--index.wxml--><!--"bindmyevent"屬性與上面"myevent"對應,當自定義組件觸發"myevent"事件時,調用"call"方法 --><call-phone bindmyevent="call"></call-phone>//index.jsPage({ call: function(e) {  console.log(e.detail.msg);//控制臺打印:"來自component的信息"  wx.makePhoneCall({   phoneNumber: e.detail.tel  }) }})

總結

以上所述是小編給大家介紹的微信小程序自定義組件的實現及數據交互,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩亚洲天堂| 欧美成人免费网| 国产成人福利视频| 亚洲欧美成人在线| 91国产精品91| 亚洲国产99精品国自产| 九九久久久久久久久激情| 亚洲一区制服诱惑| 国产精品色婷婷视频| 伊人一区二区三区久久精品| 欧美极品第一页| 国产精品国内视频| 91情侣偷在线精品国产| 日韩精品在线看| 狠狠躁夜夜躁人人躁婷婷91| 日韩在线观看免费av| 日本三级韩国三级久久| 欧美精品激情blacked18| 精品毛片网大全| 日韩在线播放一区| 深夜福利91大全| 在线a欧美视频| 国产一区二区丝袜高跟鞋图片| 欧美亚州一区二区三区| 国产福利精品av综合导导航| 精品无人区太爽高潮在线播放| 中文字幕日韩在线播放| 欧美午夜激情在线| 夜夜嗨av色一区二区不卡| 欧美一级在线亚洲天堂| 欧美疯狂性受xxxxx另类| 国产精品羞羞答答| 伊人久久久久久久久久久久久| 久久久久久国产精品三级玉女聊斋| 日本国产高清不卡| 欧美电影免费观看| 亚洲bt欧美bt日本bt| 日韩电影中文字幕一区| 成人性生交大片免费看视频直播| 欧美午夜久久久| 久久精品国产欧美激情| 综合欧美国产视频二区| 中文在线资源观看视频网站免费不卡| 91免费视频网站| 日本精品视频在线播放| 国产情人节一区| 欧美成人自拍视频| 欧美激情精品久久久久久免费印度| www.日韩av.com| 91天堂在线观看| 国产精品av网站| 久久综合伊人77777尤物| 久久久精品美女| 国产91av在线| 欧美午夜精品久久久久久浪潮| 亚洲欧美日韩第一区| 国产午夜精品全部视频在线播放| 亚洲一级一级97网| 日本欧美国产在线| 91视频8mav| 日韩av不卡在线| 国内精品久久久| 91国语精品自产拍在线观看性色| 亚洲精品中文字| 国产91对白在线播放| 一本色道久久综合狠狠躁篇怎么玩| 国产丝袜高跟一区| 欧美视频裸体精品| 成人一区二区电影| 亚洲第一福利网站| 超碰日本道色综合久久综合| 久久精品人人做人人爽| 日韩av网址在线| 国内精品在线一区| 91精品国产91久久| 亚洲精品国产精品久久清纯直播| 亚洲国产精品va在线| 中文字幕久热精品视频在线| 久久久精品2019中文字幕神马| 欧美日韩福利在线观看| 亚洲第一视频网| 亚洲精品美女久久久| 久久久精品国产网站| 久久久97精品| 国产成人精品久久| 亚洲欧美日韩一区二区三区在线| 欧美成人精品在线播放| 97人人模人人爽人人喊中文字| 亚洲新中文字幕| 精品网站999www| 国产原创欧美精品| 精品中文字幕久久久久久| 色无极影院亚洲| 91久久久久久久久久久久久| 成人久久18免费网站图片| 91免费国产视频| 欧美国产一区二区三区| 蜜臀久久99精品久久久无需会员| 精品国产一区二区三区久久狼5月| 国产999在线| 欧美区二区三区| 国产97在线亚洲| 26uuu日韩精品一区二区| 亚洲欧美三级伦理| 日韩最新免费不卡| 亚洲国产欧美一区二区三区同亚洲| 国产在线日韩在线| 国产亚洲精品日韩| 777精品视频| 久久天天躁狠狠躁夜夜躁2014| 欧美日韩午夜激情| 国产午夜精品视频| 国产欧美日韩精品丝袜高跟鞋| 5566成人精品视频免费| 91在线视频精品| 精品色蜜蜜精品视频在线观看| 欧美—级高清免费播放| 亚洲资源在线看| 欧美久久精品午夜青青大伊人| 欧美一二三视频| 午夜欧美不卡精品aaaaa| 日韩亚洲欧美中文高清在线| 国产精品99免视看9| 国产精品久久久久久搜索| 日韩中文字幕免费| 国产精品久久久久久久久久尿| 国产精品视频免费在线| 美女国内精品自产拍在线播放| 日韩精品视频观看| 久久在线免费视频| 久久精品福利视频| 欧美国产日韩中文字幕在线| 国产精品久久久久9999| 精品久久久久久久久久国产| 国产成人拍精品视频午夜网站| 亚洲激情国产精品| www.日韩不卡电影av| 国产日本欧美视频| 欧美不卡视频一区发布| 久久777国产线看观看精品| 91豆花精品一区| 久久久精品视频在线观看| 大伊人狠狠躁夜夜躁av一区| 国产亚洲欧美日韩精品| 一道本无吗dⅴd在线播放一区| 亚洲人成五月天| 亚洲第一网中文字幕| 欧美激情精品久久久久久黑人| 久久青草精品视频免费观看| 国产suv精品一区二区三区88区| 色综合久久精品亚洲国产| 欧美成人中文字幕在线| 国产91精品久久久久久| 精品自拍视频在线观看| 欧美一性一乱一交一视频| 亚洲国产精品久久久久秋霞蜜臀| 久久天天躁狠狠躁夜夜躁| 欧美性高潮床叫视频| 亚洲欧洲在线播放| 欧美性猛交xxxx乱大交蜜桃| 欧美成人sm免费视频| 欧洲一区二区视频| 欧美一区在线直播| 亚洲一区二区三|