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

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

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


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


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


WXML 模板语法


1.数据绑定


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


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

c1bd80518bff497a9bfbfab9e26567d8.png


Mustache 语法的格式


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


53e97d3c448e42d3a9e1589a44c64acd.png


2.事件绑定


2-1 什么是事件

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


2f05bc54921f43abb6ea6fb2d5782bc7.png


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


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


先看文档


6388360b5f3945819eb0d4014e61d1e4.png


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

微信截图_20221020140845.png


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


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


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

微信截图_20221020140853.png


2-4 bindtap 的语法格式


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


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


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

<view class="usermotto">
    <text class="user-motto">{{motto}}</text>
    <button bindtap="btn">确定</button>
  </view>

 

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


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

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

 

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


359c47f512fe4dc29ddcdf2811e53fc1.png


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


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


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


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


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

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

 

这里我们一点击


cb5a29dd1d3c454f8fdbec26b26edc51.png


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


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


2-6 事件传参


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

我们先举个错误的例子


首先将我们的wxml改一下

<view class="usermotto">
    <text class="user-motto">{{motto}}</text>
    <button bindtap="btn(123)">确定</button>
  </view>


然后点击确定,


9c4666d9bbbe4d29ab7fb40a2a6e6ede.png


那到底是为什么呢?


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


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


原来我们可以这样

<view class="usermotto">
    <text class="user-motto">{{motto}}</text>
    <button bindtap="btn" data-info="{{'你好呀'}}">确定</button>
  </view>


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


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


data-名字=参数的值


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


1f288d7965f74e99b6d679e50e834faa.png


2-7 bindinput 的语法格式


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

  <view class="usermotto">
    <text class="user-motto">{{motto}}</text>
    <button bindtap="btn" data-info="{{'你好呀'}}">确定</button>
    <input  bindinput="inputbtn" style="border: 1px solid #5cf;" />
  </view>


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


在我们的ts中绑定事件

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


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


23a381ba06fc4b8294652f0ee6c36e52.png


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中

  <view class="usermotto">
    <text class="user-motto">{{motto}}</text>
    <button bindtap="btn" data-info="{{'你好呀'}}">确定</button>
    <input  bindinput="inputbtn" style="border: 1px solid #5cf;" />
    <view wx:for="{{array}}">
    {{item.title}}
    </view>
  </view>


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


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


43503ba02e894dafa888fbf7b9e912dc.png


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


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

使用 wx:for-item 可以指定当前项的变量名


结束


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


相关文章
|
24天前
|
小程序
java--微信小程序发送模板消息
java--微信小程序发送模板消息
72 0
|
3月前
|
小程序 JavaScript 前端开发
微信小程序开发必备前置知识:基本代码构成与语法
【8月更文挑战第8天】微信小程序的基本代码构成与语法
97 0
微信小程序开发必备前置知识:基本代码构成与语法
|
4月前
|
小程序
同城拼车社交微信小程序模板源码
同城拼车社交微信小程序模板源码
75 6
|
4月前
|
小程序 前端开发
微信综合购物商城小程序ui模板源码
微信电商小程序前端页面,综合购物商城ui界面模板。主要功能包含:电商主页、商品分类、购物车、购物车结算、我的个人中心管理、礼券、签到、新人专享、专栏、商品详情页、我的订单、我的余额、我的积分、我的收藏、我的地址、我的礼券等。这是一款非常齐全的电商小程序前端模板。
90 4
|
4月前
|
小程序 前端开发
网络祭祀人物微信小程序模板源码
网络祭祀人物微信小程序模板源码
41 5
|
4月前
|
小程序
新闻电影资讯类小程序模板源码
新闻电影资讯类小程序模板源码
132 5
|
4月前
|
小程序
医院门诊预约挂号小程序模板源码
医院门诊预约挂号小程序模板源码
43 4
|
4月前
|
小程序
乐器培训课程报名小程序模板源码
乐器培训课程报名小程序模板源码
37 3
|
4月前
|
小程序 前端开发
手机租房房源小程序模板源码
手机租房房源小程序模板源码
141 4
|
4月前
|
小程序
日常记账微信小程序模板源码
日常记账微信小程序模板源码 模板介绍 一款实用的日常记账微信小程序模板下载。包含:引导页、登录、记账中心、消息、通讯录、个人中心等模块。
60 4