小程序第二天(视图层)

视图层

框架的视图层由WXMLWXSS编写,由组件来进行展示。

将逻辑层的数据反应成视图,同时将视图层的事件发送给逻辑层。

WXML(WeiXin Markup language) 用于描述页面的结构。

WXS(WeiXin Script) 是小程序的一套脚本语言,结合 WXML,可以构建出页面的结构。

WXSS(WeiXin Style Sheet) 用于描述页面的样式。

组件(Component)是视图的基本组成单元。

WXML

WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合基础组件、事件系统,可以构建出页面的结构。

数据绑定

1
2
<!--wxml-->
<view> {{message}} </view>
1
2
3
4
5
6
// page.js
Page({
data: {
message: 'Hello MINA!'
}
})

列表渲染

1
2
<!--wxml-->
<view wx:for="{{array}}"> {{item}} </view>
1
2
3
4
5
6
// page.js
Page({
data: {
array: [1, 2, 3, 4, 5]
}
})

条件渲染

1
2
3
4
<!--wxml-->
<view wx:if="{{view == 'WEBVIEW'}}"> WEBVIEW </view>
<view wx:elif="{{view == 'APP'}}"> APP </view>
<view wx:else="{{view == 'MINA'}}"> MINA </view>
1
2
3
4
5
6
// page.js
Page({
data: {
view: 'MINA'
}
})

模板

1
2
3
4
5
6
7
8
9
10
<!--wxml-->
<template name="staffName">
<view>
FirstName: {{firstName}}, LastName: {{lastName}}
</view>
</template>
<template is="staffName" data="{{...staffA}}"></template>
<template is="staffName" data="{{...staffB}}"></template>
<template is="staffName" data="{{...staffC}}"></template>
1
2
3
4
5
6
7
8
// page.js
Page({
data: {
staffA: {firstName: 'Hulk', lastName: 'Hu'},
staffB: {firstName: 'Shang', lastName: 'You'},
staffC: {firstName: 'Gideon', lastName: 'Lin'}
}
})

事件

1
<view bindtap="add"> {{count}} </view>
1
2
3
4
5
6
7
8
9
10
Page({
data: {
count: 1
},
add: function(e) {
this.setData({
count: this.data.count + 1
})
}
})