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

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

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


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


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


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 可以指定当前项的变量名


结束


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


相关文章
|
2月前
|
小程序 前端开发 开发者
【微信小程序】-- WXSS 模板样式- rpx & import (十三)
【微信小程序】-- WXSS 模板样式- rpx & import (十三)
|
2月前
|
小程序 JavaScript
【微信小程序】-- WXML 模板语法 - 事件绑定 -- tap & input (十)
【微信小程序】-- WXML 模板语法 - 事件绑定 -- tap & input (十)
|
2月前
|
小程序 容器
【微信小程序】-- WXML 模板语法 - 条件渲染 -- wx:if & hidden (十一)
【微信小程序】-- WXML 模板语法 - 条件渲染 -- wx:if & hidden (十一)
|
2月前
|
小程序 JavaScript
【微信小程序】-- WXML 模板语法 - 数据绑定(九)
【微信小程序】-- WXML 模板语法 - 数据绑定(九)
|
2月前
|
JSON 小程序 搜索推荐
【微信小程序】-- 模板语法与配置的总结(二十一)
【微信小程序】-- 模板语法与配置的总结(二十一)
|
2月前
|
小程序
【微信小程序】-- WXSS 模板样式- 全局样式和局部样式(十四)
【微信小程序】-- WXSS 模板样式- 全局样式和局部样式(十四)
|
2月前
|
小程序 JavaScript 索引
【微信小程序】-- WXML 模板语法 - 列表渲染 -- wx:for & wx:key(十二)
【微信小程序】-- WXML 模板语法 - 列表渲染 -- wx:for & wx:key(十二)
|
2月前
|
小程序
TDesign电商小程序模板解析02-首页功能
TDesign电商小程序模板解析02-首页功能
|
22天前
|
存储 编解码 小程序
抖音小程序开发中遇见的坑点
在抖音小程序开发中,需注意10大坑点:遵守小程序限制与规范;解决兼容性问题;优化数据加载速度;适应分享功能限制;处理视频播放挑战;优化图片加载显示;管理资源文件;提升用户体验;考虑安全性;及时更新维护。通过测试、优化和遵循官方文档,可克服这些问题,打造优质小程序。
|
1月前
|
小程序 前端开发 API
小程序全栈开发中的多端适配与响应式布局
【4月更文挑战第12天】本文探讨了小程序全栈开发中的多端适配与响应式布局。多端适配涉及平台和设备适应,确保统一用户体验;响应式布局利用媒体查询和弹性布局维持不同设备的布局一致性。实践中,开发者可借助跨平台框架实现多平台开发,运用响应式布局技术适应不同设备。同时,注意兼容性、性能优化和用户体验,以提升小程序质量和用户体验。通过这些方法,开发者能更好地掌握小程序全栈开发。

热门文章

最新文章