组件是什么?
组件是可以完成某些功能和逻辑的 代码集合, 将某些功能和逻辑封装起来, 以提供 直接使用
组件的特点就是高内聚, 可 复用性
开发者不需要知道组件内部是怎么实现的, 只需要拿来使用即可, 并且在需要的地方可多次使用
微信内置很多组件:
- 视图组件 view, scroll_view
- 基础内容 icon, text
- 表单 input, textarea
- 导航 navigator
- 媒体 video, image, audio
- 地图 map..
- 画布 canvas
- 开发能力 open-data, webview
当然后续自己也可以 自定义组件
组件的通常包含: 配置 和 事件
来看看微信内置的switch组件的定义思路
switch的一般展示样子(一个具有手动开和关的功能的开关):
switch的属性:
- checked:是否选中—-false、true
- type:开关选择器的样式—-switch, checkbox
- color:switch 的颜色,同 css 的 color
- bindchange:checked属性改变时触发 change 事件
1,2,3项为switch组件的属性, 用来呈现的 ---- 配置项
4 ---- 事件
微信就是通过定义配置项和事件来定义一个组件, 我们定义组件也是这样做
下面介绍几个简单的基本组件:
icon是一个图标组件, 根据其类型的不同, 而生成不同的图标, 不需要从外部引入
与image不同, image是导入外部的图片, image需要先存在 外部图片文件
<view wx:for='{{iconType}}'>
<icon type='{{item}}' color='blue' size='100'/>
</view>
type可取的值有: 'success', 'success_no_circle', 'info', 'warn', 'waiting', 'cancel', 'download', 'search', 'clear'
这个size默认是23px, 在书写时size="100", 不要写成size="100px", 否则无法识别
color不写时, 表示使用各种图标的默认颜色(各种图标有自身的默认颜色)
text组件
- 表示纯文本, 其它元素在text元素内都是无效的 (比如在text元素内包含一个navigator元素, navigator元素是不起作用的)
- 其文本支持转义字符, 且默认不换行, 而view组件是默认换行的
- text组件里的文字可以被选中(长按鼠标), 需要加上一个selectable属性, view中的文字则不可被选中
- 加上space属性还可以保留大量空格:
<text selectable='true'>可以选中\n我</text>
<text space='nbsp'>我 有大量 空格</text>
经测试在view上加这些属性无效
progress进度条组件
<progress percent='50' show-info stroke-width='20' color='red' active/>
percent='50'表示占总进度条的50%
show-info显示进度条的当前值
stroke-width='20'进度条的大小
color进度条颜色
active有动画效果
js中使用定时器来控制progress进度:
把active属性去掉 (不停地改变静态的属性, 看上去就是动态的)
<progress percent='{{progress}}' show-info stroke-width='20' color='red'/>
js中添加数据, 其中初始进度为0, 再加上onLoad事件, 在onLoad中添加定时器, 每0.05秒执行一下
Page({
data: {
progress : 0
},
onLoad: function() {
var that = this; /*把this保存起来, 由于在setInterval函数中取不到它*/
var pNumber = 0;
var ptimer = setInterval(function(){
pNumber ++;
if(pNumber >= 100) { /*进度为100%时清除定时器*/
clearInterval(ptimer);
}
that.setData({ /*改变进度条当前值*/
progress: pNumber
});
}, 50);
}
})