视图层基本语法
WXML 中的动态数据均来自对应 Page 的 data。 简单绑定 数据绑定使用 Mustache 语法(双大括号)将变量包起来,可以作用于:
<view> {{ message }} view>
Page({
data: {
message: 'Hello MINA!'
}
})
组件属性(需要在双引号之内)
<view id="item-{{id}}"> view>
Page({
data: {
id: 0
}
})
运算可以在 {{}} 内进行简单的运算,支持的有如下几种方式:
1.算数运算
<view> {{a + b}} + {{c}} + d view>
Page({
data: {
a: 1, b: 2, c: 3
}
})
view 中的内容为 3 + 3 + d。
2.三元运算
<view hidden="{{flag ? true : false}}"> Hidden view>
3.逻辑判断
<view wx:if="{{length > 5}}"> view>
4.字符串运算
<view>{{"hello" + name}}view>
Page({
data:{
name: 'MINA'
}
})
5.组合
也可以在 Mustache 内直接进行组合,构成新的对象或者数组。
<view wx:for="{{[zero, 1, 2, 3, 4]}}"> {{item}} view>
Page({
data: {
zero: 0
}
})
最终组合成数组[0, 1, 2, 3, 4]
<template is="objectCombine" data="{{for: a, bar: b}}">template>
Page({
data: {
a: 1,
b: 2
}
})
最终组合成的对象是 {for: 1, bar: 2}
<template is="objectCombine" data="{{...obj1, ...obj2, e: 5}}">template>
Page({
data: {
obj1: {a: 1,b: 2 },
obj2: {c: 3,d: 4}
}
})
最终组合成的对象是 {a: 1, b: 2, c: 3, d: 4, e: 5}
注意:在逻辑层的数组绑定里不能调用函数。
在框架中,我们用 wx:if="{{condition}}" 来判断是否需要渲染该代码块:
<view wx:if="{{condition}}"> True view>
Page({
data: {
condition: True
}
})
wx:if与hidden
结论
频繁切换:用 hidden。偶尔切换或不切换:用 wx:if。
<text hidden="{{condition2}}">hidden属性值为真,则不显示,为false,则显示text>
可以用 wx:elif 和 wx:else 来添加一个 else 块:
<view wx:if="{{length > 5}}"> 1 view>
<view wx:elif="{{length > 2}}"> 2 view>
<view wx:else> 3 view>
block wx:if
标签将多个组件包装起来,并在上边使用 wx:if 控制属性。<block wx:if="{{true}}">
<view> view1 view>
<view> view2 view>
block>
注意:
并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。
<view wx:for="{{items}}">
{{index}}: {{item.message}}
view>
Page({
data: {
items: [{ message: 'foo', },
{ message: 'bar' }]
}
})
使用wx:for-item可以指定数组当前元素的变量名
使用wx:for-index可以指定数组当前下标的变量名:
<view wx:for="{{items}}" wx:for-index="idx" wx:for-item="itemName">
{{idx}}: {{itemName.message}}
view>
注意会出现warning:
wx:for 也可以嵌套,下边是一个九九乘法表
<view wx:for="{{[1, 2, 3, 4, 5, 6, 7, 8, 9]}}" wx:for-item="i">
<view wx:for="{{[1, 2, 3, 4, 5, 6, 7, 8, 9]}}" wx:for-item="j">
<view wx:if="{{i <= j}}">
{{i}} * {{j}} = {{i * j}}
view>
view>
view>
block wx:for
<block wx:for="{{[1, 2, 3]}}">
<view> {{index}}: view>
<view> {{item}} view>
block>