作者:沈畅棉多多_574 | 来源:互联网 | 2023-08-08 13:54
WXML是一套标签语言,结合基础组件、事件系统,可以构建出页面的结构。
一 数据绑定
WXML中的动态数据均来自对应Page的data
数据绑定使用“MustCache”语法将变量包起来,可以作用于:
1.内容
index.wxml:
{
{}message}
index.js:
Page({ data: { message:"hello" }
})
2.组件属性、控制属性、关键字(都需要在引号之内)
比如:
index.wxml:
{
condition}}">hello
index.js:
Page({ data: { condition: false }
})
上述代码调试不会显示hello
二 运算
包括算术运算、逻辑判断、字符串计算、数据路径计算等。
如:
index.wxml:
{
a>5}}">{
{
a}}
index.js:
Page({ data:{ a:10 }
})
三 列表渲染
- wx:for
在组件上使用wx:for控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件,我们推荐使用wx:for-index和wx:for-item指定数组当前下标的变量名和元素名,因为一个页面很可能会用到多个wx:for,尽量做到变量见名知意:
index.wxml:
{
array}}" wx:for-index="indexName" wx:for-item="itemName"> {
{
indexName}}:{
{
itemName.message}}
index.js:
Page({ data: { array:[{message:'foo'},{
message:'bar'}]
}
})
四 模版
WXML提供模版,可以在模版中定义代码片段,然后在不同的地方调用。
使用name属性,作为模版的名字。然后在中定义代码片段,如创建一个template.wxml页面:
{
{
index}}: {
{
msg}} Time: {
{
time}}
然后在index.wxml引用并传入相应的数据:
{
...item}}"/>
index.js:
Page({ data: { item: { index: 0, msg: 'this is a template', time: '2018-01-6' }
}
})
ps:import有作用域的概念,即只会import目标文件中定义的template,而不会import目标文件import的template。
还有一个关键词是include,和import不同,include可以将文件除了的整个代码引入,相当于是拷贝到include的位置
五 事件
事件是视图层到逻辑层的通讯方式。
事件可以将用户的行为反馈到逻辑层进行处理。
事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。
事件对象可以携带额外信息,如id, dataset, touches。
事件分为冒泡事件和非冒泡事件
冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递。
非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递。
dataset
在组件中可以定义数据,这些数据将会通过事件传递给service。书写方式:以data-开头,多个单词由连字符-链接