WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合基础组件、事件系统,能够构建出页面的结构。html
使用{{}}绑定数据。数组
<view class='first-container' bindtap='bindTapFunc'> FirstName:{{firstName}},lastName:{{lastName}} </view>
<view id='item-{{id}}' class='first-container' bindtap='bindTapFunc'> FirstName:{{firstName}},lastName:{{lastName}} </view>
<view> <view wx:if="{{view==='WEBVIEW'}}">{{view}}</view> <view wx:elif="{{view==='APP'}}">{{view}}</view> <view wx:if="{{view==='MAC'}}">{{view}}</view> </view>
true
:boolean 类型的 true,表明真值。app
false
: boolean 类型的 false,表明假值。框架
<checkbox checked="{{false}}"> </checkbox>
特别注意:不要直接写 checked="false"
,其计算结果是一个字符串,转成 boolean 类型后表明真值。ide
<view hidden="{{flag ? true : false}}"> Hidden </view>
<view> {{a + b}} + {{c}} + d </view>
<view wx:if="{{length > 5}}"> </view>
也能够在 Mustache 内直接进行组合,构成新的对象或者数组。spa
参考文档设计
在组件上使用 wx:for
控制属性绑定一个数组,便可使用数组中各项的数据重复渲染该组件。code
默认数组的当前项的下标变量名默认为 index
,数组当前项的变量名默认为 item
component
<!--wxml--> <view wx:for="{{array}}"> {{item}} </view>
// page.js Page({ data: { message: 'Hello MINA!' } })
这里页面上数据绑定的时候,试着把item换成了随便的字母,页面上就不能正常显示列表了,因此item应该是不可修改的值。xml
<block>不是一个组件,它仅仅是一个包装元素,只接受控制属性,不会在页面中作任何渲染。
若是列表中项目的位置会动态改变或者有新的项目添加到列表中,而且但愿列表中的项目保持本身的特征和状态(如 <input/>
中的输入内容,<switch/>
的选中状态),须要使用 wx:key
来指定列表中项目的惟一的标识符。
在框架中,使用 wx:if="{{condition}}"
来判断是否须要渲染该代码块;也能够用 wx:elif
和 wx:else
来添加一个 else 块:
<!--wxml--> <view wx:if="{{view == 'WEBVIEW'}}"> WEBVIEW </view> <view wx:elif="{{view == 'APP'}}"> APP </view> <view wx:else="{{view == 'MINA'}}"> MINA </view>
// page.js Page({ data: { view: 'MINA' } })
由于 wx:if
是一个控制属性,须要将它添加到一个标签上。若是要一次性判断多个组件标签,可使用一个 <block/>
标签将多个组件包装起来,并在上边使用 wx:if
控制属性。
wx:if
vs hidden
使用 name 属性,做为模板的名字。而后在<template/>
内定义代码片断,如:
<!--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>
// page.js Page({ data: { staffA: {firstName: 'Hulk', lastName: 'Hu'}, staffB: {firstName: 'Shang', lastName: 'You'}, staffC: {firstName: 'Gideon', lastName: 'Lin'} } })
<template>中的is用于肯定须要套用哪个template,data则为在template中展示的数据。
一个wxml文件里面能够定义多个<template></template>,用name来区分。
调用时,is取对应的name值便可引用对应的模板。
is 属性可使用 Mustache 语法,来动态决定具体须要渲染哪一个模板:
<!--index.wxml--> <template name="staffName"> <view class='first-container'> FirstName:{{firstName}},lastName:{{lastName}} </view> </template> <template name="anther"> <view class='another-container'> FirstName:{{firstName}},lastName:{{lastName}} </view> </template> <template is="staffName" data="{{...staffA}}"></template> <template is="staffName" data="{{...staffB}}"></template> <template is="anther" data="{{...staffC}}"></template>
效果图:
模板拥有本身的做用域,只能使用 data 传入的数据以及模版定义文件中定义的 <wxs />
模块。