在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ 微信小程序button官方示例代碼中按鈕響應(yīng)函數(shù)問(wèn)題

微信小程序button官方示例代碼中按鈕響應(yīng)函數(shù)問(wèn)題

圖片描述

先貼代碼再說(shuō)明問(wèn)題
//button.wxml

<button type="default" size="{{defaultSize}}" loading="{{loading}}" plain="{{plain}}" disabled="{{disabled}}" bindtap="default" hover-class="other-button-hover">
  default
</button>
<button type="primary" size="{{primarySize}}" loading="{{loading}}" plain="{{plain}}" disabled="{{disabled}}" bindtap="primary">
  primary
</button>
<button type="warn" size="{{warnSize}}" loading="{{loading}}" plain="{{plain}}" disabled="{{disabled}}" bindtap="warn">
  warn
</button>
<button bindtap="setDisabled">點(diǎn)擊設(shè)置以上按鈕disabled屬性</button>
<button bindtap="setPlain">點(diǎn)擊設(shè)置以上按鈕plain屬性</button>
<button bindtap="setLoading">點(diǎn)擊設(shè)置以上按鈕loading屬性</button>
<button open-type="contact">進(jìn)入客服會(huì)話</button>

//button.js

var types = ['default', 'primary', 'warn']
var pageObject = {
  data: {
    defaultSize: 'default',
    primarySize: 'default',
    warnSize: 'default',
    disabled: false,
    plain: false,
    loading: false
  },
  setDisabled: function (e) {
    this.setData({
      disabled: !this.data.disabled
    })
  },
  setPlain: function (e) {
    this.setData({
      plain: !this.data.plain
    })
  },
  setLoading: function (e) {
    this.setData({
      loading: !this.data.loading
    })
  }
}
 
for (var i = 0; i < types.length; ++i) {
  (
    function (type) {
      pageObject[type] = function (e) {
        console.log('type=' + type, 'e=' + e)
        var key = type + 'Size'
        var changedData = {}
        changedData[key] = this.data[key] === 'default' ? 'mini' : 'default'
        console.log('changedData=' + changedData.text)
        this.setData(changedData)
      }
    }
  )(types[i])
  console.log('types[i]=' + types[i])
}
 
Page(pageObject)

問(wèn)題是button.js中最后的for循環(huán)代碼,作用是點(diǎn)擊3個(gè)按鈕,大小在default和mini之間切換,但是有幾個(gè)問(wèn)題沒(méi)搞懂:

①3個(gè)按鈕綁定了點(diǎn)擊事件,但是寫響應(yīng)函數(shù)寫在for循環(huán)里面了,不是傳統(tǒng)的寫法,不知道怎么理解。

②for循環(huán)的寫法看不懂

for(...){
  (
      ...
  )(...)

?這算什么寫法?最后一個(gè)小括號(hào)里面寫了個(gè)types[i]是什么意思??????

回答
編輯回答
有點(diǎn)壞
for (var i = 0; i < types.length; ++i) {
  (function (type) {
    
  )(types[i]);
  console.log('types[i]=' + types[i])
}

這樣看是不是爽多了?
這樣不就等于形成了一個(gè)閉包。把i這個(gè)值存了下來(lái)?
2018年3月3日 16:02