• 微信小程序--》数据绑定和事件绑定


    🏍️作者简介:大家好,我是亦世凡华、渴望知识储备自己的一名在校大学生

    🛵个人主页:亦世凡华、

    🛺系列专栏:微信小程序

    🚲座右铭:人生亦可燃烧,亦可腐败,我愿燃烧,耗尽所有光芒。

    👀引言

           ⚓经过web前端开发的学习,相信大家对于前端开发有了一定深入的了解,今天我开设了微信小程序专栏,主要想从移动端开发方向进一步发展,而对于我来说写移动端博文的第一站就是小程序开发,希望看到我文章的朋友能对你有所帮助。

    目录

    📚WXML模板语法—数据绑定

    📰数据绑定的基本原则

    📰在 data 中定义页面数据

    📰Mustache 语法的格式

    📰Mustache 语法应用场景

    动态绑定内容

    动态绑定属性

    三元运算

    算数运算

    📚WXML模板语法—事件绑定

    📰小程序中常用的事件

    📰事件对象的属性列表

    📰target 和 currentTarget 的区别

    📰bindtap 的语法格式

    📰在事件处理函数中为 data 中的数据赋值

    📰事件传参

    📰bindinput 的语法格式

    📰文本框与 data 之间的数据同步

    📚小程序—API

    📰API的三大分类


    📚WXML模板语法—数据绑定

    📰数据绑定的基本原则

    在data 中定义数据

    在 WXML 中使用数据

    📰在 data 中定义页面数据

    在页面对应的 .js 文件中,把数据定义到 data 对象中即可:

    1. Page({
    2. data: {
    3. //字符串类型的数据
    4. info:'init data',
    5. //数据类型的数据
    6. msgList:[{msg:'hello'},{msg:'world'}]
    7. }
    8. })

    📰Mustache 语法的格式

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

    <view>{{要绑定的数据}}view>

    📰Mustache 语法应用场景

    ● 绑定内容        ● 绑定属性        ● 运算(三元运算、算术运算等)

    动态绑定内容

    页面数据如下:

    1. Page({
    2. data: {
    3. say:'hello world'
    4. }
    5. })

    页面结构如下:

    <view>{{say}}view>

    动态绑定属性

    页面数据如下:

    1. Page({
    2. data: {
    3. imgSrc:'https://www.baidu.com'
    4. }
    5. })

    页面结构如下:

    <image src='{{imgSrc}}'>image>

    三元运算

    页面数据如下:

    1. Page({
    2. data: {
    3. randomNum:Math.random() * 12 //生成12以内的随机数
    4. }
    5. })

    页面结构如下:

    <view>{{ randomNum >=8 ? '生成的随机数大于等于8':'生成的随机数小于8' }}view>

    算数运算

    页面数据如下:

    1. Page({
    2. data: {
    3. randomNum:Math.random()*toFixed(2) //生成一个带有两位小数的随机数
    4. }
    5. })

    页面结构如下:

    <view>生成100以内的随机数:{{randomNum*100}}view>

    📚WXML模板语法—事件绑定

    事件是渲染层到逻辑层的通讯方式。通过事件可以将用户在渲染层产生的行为,反馈到逻辑层进行业务处理。

    📰小程序中常用的事件

    类型绑定方式事件描述
    tapbindtap 或 bind:tap手指触摸后马上离开,类似于HTML中的click事件
    inputbindinput 或 bind:input文本框的输入事件
    changebindchange 或 bind:change状态改变时触发

    📰事件对象的属性列表

    当事件回调触发的时候,会收到一个事件对象 event 。其详细属性如下:

    属性类型说明
    typeString事件类型
    timeStampInteger页面打开到触发事件所经过的毫秒数
    targetObject触发事件的组件的一些属性值的集合
    currentTargetObject当前组件的一些属性值集合
    detailObject额外属性
    touchesArray触摸事件,当前停留在屏幕中的触摸点信息的数组
    changedTouchesArray触摸事件,当前变化的触摸点信息的数组

    📰target 和 currentTarget 的区别

    target触发该事件的源头组件,而 currentTarget 则是当前事件所绑定的组件,举例:

    1. <view class="out-view" outerHandler>
    2. <button type="primary">按钮button>
    3. view>

    点击内部的按钮时,点击事件以冒泡的方式向外扩散,也会触发外层view的tap事件处理函数。此外,对于外层的view来说:

    ●e.target指向的是触发事件的源头组件,因此,e.target是内部的组件

    ●e.currentTarget指向的是当前正在触发事件的那个组件,因此,e.currentTarget是当前的view组件

    📰bindtap 的语法格式

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

    ① 通过 bindtap,可以为组件绑定 tap 触摸事件,语法格式如下:

    <button type="primary" bindtap="btnTapHandler">按钮button>

    ② 在页面中的 .js 文件中定义对应的事件处理函数,事件参数通过形参 event(一般简写:e)来接收:

    1. Page({
    2. btnTapHandler(e){ //按钮的事件处理函数
    3. console.log(e) //事件参数对象e
    4. }
    5. })

    📰在事件处理函数中为 data 中的数据赋值

    通过调用 this.setData(dataObject)方法,可以给页面 data 中的数据重新赋值,如下:

    <button type="primary" bindtap="changeCount">+1button>
    1. Page({
    2. data: {
    3. count:0
    4. },
    5. //修改count的值
    6. changeCount(){
    7. this.setData({
    8. count:this.data.count+1
    9. })
    10. }
    11. })

    📰事件传参

    可以为组件提供 data-* 自定义属性传参,其中 * 代表着参数的名字,示例代码如下:

    <button bindtap="btnHandler" data-info="{{2}}">事件传参button>

    info 会被解析为 参数的名字  、数值 2 会被解析为参数的值。

    <button type="primary" bindtap="btnTap" data-info="{{2}}">+2button>
    1. Page({
    2. //修改count的值
    3. changeCount(){
    4. this.setData({
    5. count:this.data.count+1
    6. })
    7. },
    8. btnTap(e){
    9. this.setData({
    10. count:this.data.count+e.target.dataset.info
    11. })
    12. },
    13. })

    📰bindinput 的语法格式

    在小程序中,通过 input 事件来响应文本框的输入事件,语法格式如下:

    ① 通过 bindinput ,可以为文本框绑定输入事件:

    <input bindinput='inputHandler'>input>

    ② 在页面的 .js 文件中定义事件处理函数

    1. inputHandler(e){
    2. // e.detail.value 是变化过后,文本框最新的值
    3. console,log(e.detail.value)
    4. }

    📰文本框与 data 之间的数据同步

    ①定义数据

    1. Page({
    2. data:{
    3. msg:'你好'
    4. }
    5. })

    ②渲染结构

    <input value='{{msg}}' bindinput='iptHandler'>input>

    ③美化样式

    1. input{
    2. border:1px solid #eee;
    3. padding:5px;
    4. margin:5px;
    5. border-radius:3px;
    6. }

    ④绑定 input 事件处理函数

    1. //文本框内容改变事件
    2. iptHandler(e){
    3. this.setData({
    4. //通过 e.detail.value 获取到文本框最新的值
    5. msg:e.detail.value
    6. })
    7. }

    📚小程序—API

    这里补充一下API的知识:小程序中的 API 是由宿主环境提供的,通过这些丰富的小程序 API ,开发者可以方便的调用微信提供的能力,例如:获取用户信息、本地储存、支付功能等。

    📰API的三大分类

    事件监听 API

            ● 特点:以 on 开头,用来监听某些事件的触发

            ● 举例:wx.onWindowResize(function callback) 监听窗口尺寸变化的事件

    同步 API

            ● 特点1:以Sync结尾的 API 都是同步 API

            ● 特点2:同步 API 的执行结果,可以通过函数返回值直接获取,如果执行出错会抛出异常

            ● 举例:wx.setStorageSync("key","value") 向本地存储中写入内容

    异步 API

            ● 特点:类似于 jQuery 中的 $.ajax(options) 函数,需通过 success、fail、compele接收调用的结果。

            ● 举例:wx.request() 发起网络数据请求,通过success回调函数接收数据。

  • 相关阅读:
    Referer和Referrer Policy及图片防盗链
    安全狗陈荣有:打造“即开即用”的云原生安全能力
    一元二次函数教案
    LinkList集合方法(自写)
    Sora关于背景详细的提示词技巧
    Linux_理解程序地址空间和页表
    Anaconda 踩过的一些坑
    比React—Redux和Redux好用100倍的原子级状态管理器,是我们公司自己封装的npm包,如果感兴趣可以研究研究,会大大提高开发效率
    【教材】20022/11/28[指针] 指针数组
    RCE远程命令执行web经典题型解答
  • 原文地址:https://blog.csdn.net/qq_53123067/article/details/125829931