微信小程序官方文档中表单组建button部分有关function(type)中type的个人理解
2024-08-23 08:34:41
官方文档关于button组件的简介
xml页面挺容易理解,但js部分起初对整体写的形式都不太理解,随着逐渐阅读代码基本理解了
xml页面代码:
<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>
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) {
var key = type + 'Size'
var changedData = {}
changedData[key] =
this.data[key] === 'default' ? 'mini' : 'default'
this.setData(changedData)
}
})(types[i])
} Page(pageObject)
起初很懵逼,一般不都是下边这种形式么
Page({
data:{
},
onLoad: function (options) {
}
})
仔细一看后发现 Page(pageObject) 在最下边 pageObject是定义的一个函数,整体和之前没什么区别
但看到function(type)这部分后,有点懵逼,Google也搜不到关于function(type)的解释
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)
}
})(types[i])
}
结合最初定义的数组
var types = ['default', 'primary', 'warn']
我就大胆猜测了一下,type可能是types[i]下当前的值,而
var key = type + 'Size'
是对data中定义的函数进行重组成data中的函数defauSize,primarySize,warnSize,而type[i]又巧妙地用当前的值也就是xml页面中对应的bindTap值进行响应,继而改变button的size的值
最新文章
- 微信小程序开发—快速掌握组件及API的方法
- 【小白的CFD之旅】13 敲门实例【续3】
- SpringMVC中定时器继承Task后无法对service注入问题
- 一款很实用的jQuery鼠标悬浮有动画效果的响应式瀑布流插件
- (转)无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。此操作失败的原因是对 IID 为“{00020970-
- threadlocal类
- hdu 4302 优先队列
- CSS兼容性(IE和Firefox)技巧大全
- NOI 银河英雄传说
- (转)实战Memcached缓存系统(4)Memcached的CAS协议
- 浅谈pageobject模式
- C#实现仿QQ震动
- java 二维码原理以及用java实现的二维码的生成、解码(转)
- background-image使用svg如何改变颜色
- jQuery validator plugin之概要
- python绝对路径的表述方式 及 字符串的转义
- php usort
- [JAVA]JAVA章1 数组数据去重
- 从官网下载指定版本的JDK
- js便签笔记(10) - 分享:json.js源码解读笔记
热门文章
- jar包要读取的资源文件路径问题
- AndroidStudio使用的kotlin简介
- Laravel 框架对于分表进行统计合并查询的思路
- Checkedlistbox只能单选不能多选
- angular cli + primeNG
- Chrome是老大,Firefox 是老二,Edge 不是老三
- 【好书推荐】《剑指Offer》之硬技能(编程题1~6)
- django的使用INNODE的方式,排除错误MySQL Strict Mode is not set for database connection &#39;default&#39;
- 微服务与K8S容器云平台架构
- Python生成requirements.txt方法