[key] json对象中 变量有时候需要用[] 包起来 才起作用 。
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
})
},
onGotUserInfo: function (e) {
console.log(e.detail.errMsg)
console.log(e.detail.userInfo)
console.log(e.detail.rawData)
},
}
for (var i = 0; i < types.length; ++i) {
(function (type) {
pageObject[type] = function (e) {
var key = type + 'Size'
var changedData = {}
changedData[key] =
this.data[key] === 'default' ? 'mini' : 'default'
this.setData(changedData)
console.log('key:'+key)
console.log('changedData:'+changedData)
console.log(changedData)
console.log('changedData.key:'+ changedData.key)
console.log('changedData[key]:'+changedData[key])
console.log('changedData.defaultSize:' + changedData.defaultSize)
console.log('changedData[key]'+changedData[key])
console.log('--------------------------------------------------------');
console.log(key)
console.log(changedData)
console.log(changedData.key)
console.log(changedData[key])
console.log(changedData.defaultSize)
}
})(types[i])
}
Page(pageObject)
<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">点击设置以上按钮disabled属性</button>
<button bindtap="setPlain">点击设置以上按钮plain属性</button>
<button bindtap="setLoading">点击设置以上按钮loading属性</button>
<button open-type="contact">进入客服会话</button>
<button open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="onGotUserInfo">获取用户信息</button>
<button open-type="openSetting">打开授权设置页</button>
index.js? [sm]:41 key:defaultSize
index.js? [sm]:42 changedData:[object Object]
index.js? [sm]:43 {defaultSize: "mini"}
index.js? [sm]:44 changedData.key:undefined
index.js? [sm]:45 changedData[key]:mini
index.js? [sm]:46 changedData.defaultSize:mini
index.js? [sm]:47 changedData[key]mini
index.js? [sm]:48 --------------------------------------------------------
index.js? [sm]:49 defaultSize
index.js? [sm]:50 {defaultSize: "mini"}
index.js? [sm]:51 undefined
index.js? [sm]:52 mini
index.js? [sm]:53 mini