零基础学小程序 —— 模板语法(二)

目录

WXML 模板语法

1.数据绑定

在 data 中定义页面的数据(motto)

Mustache 语法的格式

2.事件绑定

2-1 什么是事件

2-2 小程序中常用的事件

2-3 事件对象的属性列表

2-4 bindtap 的语法格式

 2-5  在事件处理函数中为 data 中的数据赋值

2-6 事件传参

 2-7 bindinput 的语法格式

3.条件渲染

3-1 wx:for

结束


上文我们已经创建好了小程序,并了解了一些基本的配置,新手建议从第一章开始看

零基础学小程序 —— 小程序入门(一)

接下里我们将深入的讲解小程序的模板语法

WXML 模板语法

1.数据绑定

在vue2中我们的数据是在data(script)中定义的,数据是在模板(template)中使用的,而在我们小程序里我们的数据是在页面对应的 .js(ts) 文件中Page里面的data中定义

在 data 中定义页面的数据(motto)

零基础学小程序 —— 模板语法(二)_第1张图片

Mustache 语法的格式

把data中的数据绑定到页面中渲染,使用 Mustache 语法(双大括号)将变量包起来即可

零基础学小程序 —— 模板语法(二)_第2张图片

2.事件绑定

2-1 什么是事件

学过js的同学就应该知道什么是事件,这里照顾一下没有基础的同学,事件就是渲染层到逻辑层的通讯方式。通过事件可以将用户在渲染层产生的行为,反馈到逻辑层进行业务的处理。

零基础学小程序 —— 模板语法(二)_第3张图片

2-2 小程序中常用的事件

既然已经了解了什么是事件,那么小程序中是事件有哪些呢?跟我们的js有什么不同呢,接着往下看。

先看文档

零基础学小程序 —— 模板语法(二)_第4张图片

 这里提供了那么多事件,我这边就挑几个常用的。

类型 绑定方式 事件描述
tag bindtap或bind:tap 手指触摸后马上离开,相当于js中的click事件
input bindinput或bind:input 文本框的输入事件
change bindchange或bind:change 状态改变时触发


2-3 事件对象的属性列表

如无特殊说明,当组件触发事件时,逻辑层绑定该事件的处理函数会收到一个事件对象。

    这里总结一些重要的事件对象,了解即可,用到可以随时查阅文档。(下列事件对象全是取自官方文档)

属性 类型 说明
type String 事件类型
 
timeStamp Integer 页面打开到触发事件所经过的毫秒数
target Object 触发事件的组件的一些属性值集合
currentTarget Object 当前组件的一些属性值集合
detail Object 额外的信息
touches Array 触摸事件,当前停留在屏幕中的触摸点信息的数组
changedTouches Array 触摸事件,当前变化的触摸点信息的数组

2-4 bindtap 的语法格式

在小程序中,不存在 html 中的 onclick 鼠标点击事件,而是通过 tap 事件来响应用户的触摸行为,

上面讲了那么多tap事件,那么接下里带着大家实际操作一下。

首先在我们的index.wxml里面一个按钮在给它添加一个bindtap事件

  
    {{motto}}
    
  

然后在我们的js(ts)页面中写入对应的事件处理函数(事件参数通过我们的形参event简写成我们的e接收)

因为我这里是用的ts,在测试阶段给他一个any类型以免报错,

  btn(e:any){
    console.log('确定被触发',e)
  },

然后回到我们的页面点击触发可以看到我们的btn就被触发了。

零基础学小程序 —— 模板语法(二)_第5张图片

 2-5  在事件处理函数中为 data 中的数据赋值

那么上面我们的事件已经学习完毕了,那如果我想把我们的上面data中的motto的值改变呢,现在我们的motto的值是‘hello word’

那如果我想一点击我们的btn函数就将我们的motto改变成 '你好呀'该怎么做呢?

如果学过vue的同学肯定就要说了,可以用this.来进行赋值修改。但是我们现在是用的小程序了。可不能像之前的方式了。其实也很简单,

我们这里可以通过我们的this.setData来进想修改,听到这里,学习过react的同学是不是就感觉特别熟悉呢?接着往下看。因为是初学这里就不深入讲解他的原理了。我们直接看使用方式。

  btn(e:any){
    console.log('确定被触发',e)
    this.setData({
      motto:'你好呀'
    })
  },

这里我们一点击

零基础学小程序 —— 模板语法(二)_第6张图片

数据就更新了。他的写法是

this.setData({这里可以直接以对象的新式修改data中已有的数据的值})

2-6 事件传参

说到事件传参学过js的同学这时候又会说了,这个我知道直接在事件的后面加上括号写上需要传递的参数。错。小程序中的事件传参比较特殊,不能在绑定事件的同时为事件处理函数传递参数

我们先举个错误的例子

首先将我们的wxml改一下


    {{motto}}
    
  

然后点击确定,

零基础学小程序 —— 模板语法(二)_第7张图片

那到底是为什么呢?

因为小程序会把 btn的属性值,统一当作事件名称来处理,相当于要调用一个名称为 btn(123) 的事件处理函数。

那我们正确的做法是怎么样的呢?

原来我们可以这样


    {{motto}}
    
  

我们可以使用data -info=参数的值

最终我们的info会被解析为参数名字,意思就是你可以

data-名字=参数的值

然后我们打印一下 通过 e.target.dataset 就可以拿到我们的值了 

零基础学小程序 —— 模板语法(二)_第8张图片

 2-7 bindinput 的语法格式

在小程序中,通过 input 事件来响应文本框的输入事件我们上面提到过可以通过bindinput,演示一下

  
    {{motto}}
    
    
  

这里因为看不清所以加了一个边框。

在我们的ts中绑定事件

  inputbtn(e:any){
    console.log(e)
  }

然后我们随机输入一个数字。在我们的e.detail.value就是我们最新的值

零基础学小程序 —— 模板语法(二)_第9张图片

3.条件渲染

3-1 wx:for

首先来看看wx:for的定义

wx:for 可以根据指定的数组,循环渲染重复的组件结构

看到这里我们学过vue的小伙伴又会说呢,那不就是v-for吗?这次没错了。wx:for就相当于我们vue中的v-for,那我们看看他的写法把 首先在我们ts文件中定义一个数值 array

    array:[
      {title:'vue',id:1},
      {title:'react',id:2},
      {title:'uniapp',id:3}
    ],

然后在我们wxml中

  
    {{motto}}
    
    
    
    {{item.title}}
    
  

这里跟我们vue不同的是我们直接wx:for我们的数组 然后不用直接可以通过我们的item点我们的值进行渲染

默认情况下,当前循环项的索引用 index 表示;当前循环项用 item 表示。

零基础学小程序 —— 模板语法(二)_第10张图片

那如果我不想用item点xx进行渲染怎么办呢。其实也简单我们可以

使用 wx:for-index 可以指定当前循环项的索引的变量名
使用 wx:for-item 可以指定当前项的变量名

 

结束

好啦,到这里我们的微信小程序模板语法就讲解完毕了,如果你觉得写的还不错你可以点个关注哦。

如果你还有什么问题你可以选择↓↓↓

微信公众号搜索 海海学前端 来了解更多


 

你可能感兴趣的:(微信小程序,小程序)