小程序自定義評分組件 Component(精度0.1)

簡單預(yù)覽

網(wǎng)上一直再埋怨小程序沒有組件化,現(xiàn)在小程序升級了,提供了自定義組件 Component,目前處于公測階段。今天體驗一回,將之前使用 template 寫的評分組件重寫了下。
小程序自定義評分組件 template(精度0.1)

從小程序基礎(chǔ)庫版本 1.6.3 開始,小程序支持簡潔的組件化編程。

自定義組件

自定義組件類似頁面,由 json wxml wxss js 4個文件組成。

  1. rating.json
    必需在 json 文件中聲明為組件

    {
        "component": true
    }
    
  2. rating.wxml
    wxml 文件中編寫布局

    <view class='com-rating'>
      <view class='rating-icon' wx:for='{{[1,2,3,4,5]}}' wx:key='*this'
        bindtap='_handleTap' data-num='{{item}}'>
        <view class='rating-on' style='width:{{rating >= (max/5)*item ? 1 : rating < (max/5)*(item-1) ? 0 : (rating*10)%(max/5*10)/(max/5*10)}}em'>
          <image src='./../../images/rating_on_icon.png' mode='widthFix' style='width:1em' />
        </view>
        <view class='rating-off' style='width:1em;'>
          <image src='./../../images/rating_off_icon.png' mode='widthFix' style='width:1em' />
        </view>
      </view>
    </view>
    
  3. rating.wxss
    修飾組件樣式

    .com-rating {
      display: inline-block;
      letter-spacing: .3em;
      position: relative;
    }
    .com-rating .rating-icon,
    .com-rating .rating-on,
    .com-rating .rating-off {
      display: inline-block;
    }
    .com-rating .rating-icon:not(:last-child) {
      margin-right: .2em;
    }
    .com-rating .rating-on {
      color: black;
      position: absolute;
      overflow: hidden;
      padding: 0;
      margin: 0;
    }
    .com-rating .rating-off {
      color: #DBDBDB;
      padding: 0;
      margin: 0;
    }
    
  4. rating.js
    初始化組件屬性及事件

    Component({
      // 聲明組件屬性及默認值
      properties: {
        rating: {
          type: Number,  // 必需 指定屬性類型 [String, Number, Boolean, Object, Array, null(任意類型)]
          value: 10
        },
        max: {
          type: Number,
          value: 5
        },
        disabled: {
          type: Boolean,
          value: false
        }
      },
    
      // 組件私有和公開的方法,組件所使用的方法需在此聲明
      methods: {
        _handleTap: function (e) {
          if (this.data.disabled) return;
          const { max } = this.data;
          const { num } = e.currentTarget.dataset;
          this.setData({
            rating: max / 5 * num
          })
          // 自定義組件事件
          this.triggerEvent('change', { value: max / 5 * num }, e);
        }
      }
    
    })
    

使用

組件除了在 page 中使用外,在組件中也可以使用。以 page 舉例。

  1. .json
    在 json 文件中需聲明組件

    {
      "usingComponents": {
        "com-rating": "/components/rating/rating"
      }
    }
    
  2. .wxml

    <!-- bindchange 事件需與組件中定義的自定義事件保持一致,如組件定義的 change,這里使用的是 bindchange -->
    <com-rating max="10" rating='6.5' bindchange='handleChange' />
    
  3. .js
    在 js 文件中監(jiān)聽事件

    /**
     *@param {Object} e 組件自定義事件傳遞的數(shù)據(jù)
     */
    handleChange: function(e) {
        this.setData({
          rating: e.detail.value
        })
     }
    

組件樣式有限制,這里沒有使用 FontAwesome,如需使用字體圖標(biāo)可查看小程序自定義評分組件 template(精度0.1)

更多使用可以查看我開源的小程序

小程序

開源地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,628評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,160評論 25 708
  • afinalAfinal是一個android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,889評論 2 45
  • #幸福是需要修出來的~每天進步1% 20170906 【幸福三朵玫瑰】 昨日玫瑰采摘2朵 今日3朵玫瑰 補房產(chǎn)課作...
    幸福實修王迪閱讀 232評論 0 0
  • 第一聲積雪化為浮云 蟈蟈還沒睡醒 我,鋪開萬里無云 一日長三寸 一寸懵懂 一寸相思,還有 一寸六月里的笛音 我日日...
    藍朵世界閱讀 745評論 44 49

友情鏈接更多精彩內(nèi)容