如何使用小程序自定義組件功能


標簽: 小程序 component


需求

小程序開發(fā)時通過自定義組件將頻繁使用的模塊抽取出來,簡化代碼;

實現(xiàn)訂單頁面的一個小組件模塊

實現(xiàn)難點

小程序文檔相關(guān)的說明太過于詳細晋辆,以至于不能快速上手使用,因此這里從頑意小程序中拿出一個例子來說明如何使用小程序的自定義組件功能

知識準備

  • 組件與頁面一樣由四個文件組成,組件與頁面寫法相同按脚,組件模板與組件數(shù)據(jù)結(jié)合后生成的節(jié)點樹,將被插入到組件的引用位置上敦冬,組件提供slot節(jié)點承載引用組件時提供的子節(jié)點辅搬;

代碼實現(xiàn)

自定義組件

  1. 使用組件前需要在組件的json文件中聲明,component字段設(shè)置為true
{
  "component": true,
  "usingComponents": {}
}

2.wxml中編寫組件模板脖旱,wxss加入樣式

<wxs module="filters" src="../../utils/numberic.wxs"/>
<view class="orderCard" >
  <view class='commodity flex-box ai-s'>
    <image class='commodityImg' src="{{item.image}}"></image>
    <view class='content flex-1'>
      <view class='commodityName'>{{item.name}}</view>
      <view class='commoditySpecification'>{{item.standardName}}</view>
      <view class='commoditySpecification'>{{item.standardName}}</view>
    </view>
    <view class='price'>¥ {{ item.price }}</view>
  </view>
  <view class='money flex-box jc-e' wx:if="{{showTotalPrice}}">
    <view class='amount'>共{{item.num}}件商品</view>
    <view class='allPay'>
      實付:
    <text class='allPayMoney'>¥ {{ price }}</text>
    </view>
  </view>
  <view class='btnBox flex-box jc-e ai-ce' wx:if="{{showBtn}}">
    <view class='btn seeMove' wx:if="{{type === 'DELIVER' || type === 'RECEIVE'}}">查看物流</view>
    <view 
        class='btn return' 
        wx:if="{{type === 'CREATE'}}" 
        style="color:'#ff3366'" 
        data-id="{{orderid}}" 
        catchtap="cancleOrder"
       > 
        取消訂單
    </view> 
  </view>
</view>

頁面引用組件

1.在頁面的json文件中配置引入的組件

{
  "usingComponents": {
    "orderCard": "../../base/orderCard/orderCard"
  }
}

2.頁面中使用自定義組件

<view class='orderCardBox' wx:for="{{totalData}}" wx:key="{{item.orderId}}" >
    <orderCard 
      bindtap="switchToOrderDetail" 
      item="{{item.shoppingCartPageWebVO}}" 
      type="{{item.orderType}}" 
      orderid="{{item.orderId}}" 
      data-orderid="{{item.orderId}}" 
      price="{{item.price}}"
      bind:cancleOrder="refreshPage"
    >
    </orderCard>
</view>

父組件與子組件的通信

1.父組件通過屬性將數(shù)據(jù)傳到子組件中堪遂,需要通過Component構(gòu)造器的properties字段定義,才能完成屬性名到屬性的映射萌庆;
2.子組件通過事件傳遞數(shù)據(jù)到父組件:
- this.triggerEvent(' ',{},{}),第一個參數(shù)是自定義事件名稱溶褪,這個名稱是在頁面調(diào)用組件時bind的名稱,第二個對象傳遞需要的數(shù)據(jù)践险,第三個參數(shù)事件選項包括事件冒泡猿妈、捕獲等設(shè)置;

Component({
    options: {
        addGlobalClass: true, //使用全局的css樣式
    },
    /**
     * 組件的屬性列表
     */
    properties: {
        item: {
            type: Object,
            value: true,
        },
        type: {
            type: String,
            value: true,
        },
        orderid: {
            type: String,
        },
        price: {
            type: Number,
            value: 0,
        }
    },

    /**
     * 組件的初始數(shù)據(jù)
     */
    data: {
        showBtn: true,
        showTotalPrice: true
    },

    /**
     * 組件的方法列表
     */
    methods: {
        cancleOrder: function (e) {
            var myEventDetail = {
                val: 'cancle'
              } ;
             this.triggerEvent('cancleOrder', myEventDetail) 
             //cancleOrder是自定義名稱事件巍虫,父組件中使用
               }
        }
    })

參考文檔

1.更加詳細深入的介紹可以參考小程序開發(fā)文檔彭则;

往期精彩回顧


廣州蘆葦科技web前端

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市占遥,隨后出現(xiàn)的幾起案子俯抖,更是在濱河造成了極大的恐慌,老刑警劉巖瓦胎,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芬萍,死亡現(xiàn)場離奇詭異,居然都是意外死亡搔啊,警方通過查閱死者的電腦和手機柬祠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來负芋,“玉大人瓶盛,你說我怎么就攤上這事。” “怎么了惩猫?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵芝硬,是天一觀的道長。 經(jīng)常有香客問我轧房,道長拌阴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任奶镶,我火速辦了婚禮迟赃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘厂镇。我一直安慰自己纤壁,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布捺信。 她就那樣靜靜地躺著酌媒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪迄靠。 梳的紋絲不亂的頭發(fā)上秒咨,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音掌挚,去河邊找鬼雨席。 笑死,一個胖子當(dāng)著我的面吹牛吠式,可吹牛的內(nèi)容都是我干的陡厘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼特占,長吁一口氣:“原來是場噩夢啊……” “哼糙置!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起摩钙,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤罢低,失蹤者是張志新(化名)和其女友劉穎查辩,沒想到半個月后胖笛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡宜岛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年长踊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片萍倡。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡身弊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情阱佛,我是刑警寧澤帖汞,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站凑术,受9級特大地震影響翩蘸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜淮逊,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一催首、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧泄鹏,春花似錦郎任、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至胶台,卻和暖如春歼疮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背诈唬。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工韩脏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人铸磅。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓赡矢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親阅仔。 傳聞我的和親對象是個殘疾皇子吹散,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容