uniapp入门:常用事件绑定与数据同步

news2025/1/18 9:03:32

     1.常见事件与事件绑定
         1.1点击事件bindtap
         1.2 文本输入事件bindinput
         1.3 切换事件bindtouchend
     2.数据同步
         2.1事件回调
         2.2逻辑层中page对象中的中数据如何进行改变
         2.3页面触发事件如何传参到page中数据
         2.4 文本框中内容如何传递到page中

     开始今天的内容之前首先想一个问题:什么叫事件?官方说法:事件是视图层到逻辑层的通讯方式.通俗易懂的说法:每个操作都可以算作一个事件,比如说点击按钮时点击事件、输入文本信息时就是输入事件等等。

1.常见事件与事件绑定

1.1点击事件bindtap

     手指触摸之后马上离开触发的事件,相当于html中click事件.下面以一个简单示例进行说明:
    index.js中定义点击函数:clickFunction:

Page({
  clickFunction: function() {
    console.log("点击事件生效")
  }
  })

    index.wxml创建按钮标签,使用bindtap属性绑定自定义点击事件函数clickFunction:

<button type="primary" bindtap="clickFunction">按钮</button>

    页面点击按钮之后观察控制台输出指定内容说明事件绑定成功:
在这里插入图片描述

1.2 文本输入事件bindinput

     文本框中输入内容之后触发的事件。以一个简单的示例进行讲解:
     index.js中创建inputFcuntion函数,绑定输入事件生效之后输出指定文字内容:

Page({
  // 输入事件
  inputFcuntion: function(){
    console.log("输入内容之后控制台信息打印");
  }
  })

     index.wxml中添加input标签,属性中使用bindinput绑定自定义的输入事件函数:

<view>文本输入区域:</view>
<input type="text" bindinput="inputFcuntion"></input>

     文本中输入内容之后观察控制台有内容输出说明输入事件绑定成功:
在这里插入图片描述

1.3 切换事件bindtouchend

     状态改变时触发。定义一个多选框,支持选择男和女,进行切换时能实现控制台内容删除.
    index.js中定义事件切换函数:

Page({
  // 切换事件
  changeFcuntion: function(){
    console.log("切换选项之后打印输出内容");
  }
  })

    index.wxml中创建多选框,支持男女切换:

<checkbox-group>
<checkbox bindtouchend="changeFcuntion"></checkbox>
<checkbox bindtouchend="changeFcuntion"></checkbox>
</checkbox-group>

    点击切换后观察控制台内容输出:
在这里插入图片描述

2.数据同步

    如何实现在视图层与逻辑层进行数据传递,下面通过几个问题以及简单案例来说明实现过程。

2.1事件回调

    当事件回调的时候,js文件所代表的逻辑层会收到一个事件对象event,相关的属性如下,其中最常用的是target和detail属性.
在这里插入图片描述

2.2逻辑层中page对象中的中数据如何进行改变

    page中data可以看做是page对象的一个属性,从当前page对象页面获取data中每个定义数据方法:

this.data.data属性名

    当前page对象页面设置data中每个定义数据值的方法:

 this.setData({
      data中属性名: this.data.data中属性名+处理逻辑(加减乘除或字符串拼接)
    })

    下面用案例来说明一下如何根据事件来实现page对象中数据变化:
    page对象中定义初始化点击次数:clickNmu,页面上每点击一次按钮,该次数实现加一并打印到控制台.
    index.js中初始化clickNmu并从点击事件中设置clickNmu值:

Page({
  data:{
    // 点击次数
    clickNmu: 0
  },
  // 点击事件
  clickFunction: function(event) {
    this.setData({
      clickNmu: this.data.clickNmu+1
    })
    console.log(this.data.clickNmu);
  }
  })

    index.wxml中按钮添加点击事件:

<button type="primary" bindtap="clickFunction">按钮</button>

    点击按钮之后控制台点击次数进行加一并打印输出:
在这里插入图片描述

2.3页面触发事件如何传参到page中数据

    uniapp中页面函数中不支持传递参数,如果需要传递参数需要按照如下格式定义参数名以及参数值:

data-属性名="{{属性值}}"

page对象中获取页面自定义参数值的方式:

事件回调对象event.target.dataset.属性名

通过案例说下如何进行使用:
    2.2中的page对象中初始点击次数默认设置为0,每次点击页面按钮需要将点击次数加5.通过页面传参实现。
    index.wxml中设置点击事件传递参数名initClickNum以及参数值5:

<button type="primary" bindtap="clickFunction" data-initClickNum="{{5}}">按钮</button>

    index.js中page对象中重置点击次数:当前点击次数+页面点击事件新增点击次数5:

Page({
  data:{
    // 点击次数
    clickNmu: 0
  },
  // 点击事件
  clickFunction: function(event) {
    this.setData({
      clickNmu: this.data.clickNmu + event.target.dataset.initclicknum
    }),
    console.log(this.data.clickNmu)
  }
  })

    每次点击之后观察控制台输出内容(每次加5):
在这里插入图片描述
    注意每次加5需要使用差值表达式进行包裹,否则会解析成字符串5,到逻辑层相加就会成为字符串拼接.另外对于page对象中获取自定义属性名会进行去驼峰处理,页面中定义的属性名是initClickNum,实际逻辑层解析出来的是initclicknum.

2.4 文本框中内容如何传递到page中

    以input文本框输入为例将以下如何将文本框输入的内容同步到page对象指定数据中.
    index.js中初始化定义消息属性:msg,文本输入事件中将输入的内容进行拼接,获取文本框中输入内容方式:

事件回调event.detail.value

具体逻辑如下:

Page({
  data:{
    // 文本信息
    msg: 'page对象中的msg信息,拼接页面输入的信息:'
  },
  // 输入事件
  inputFcuntion: function(envet){
    console.log(envet);
    console.log(envet.detail.value);
    console.log(this.data.msg);
    this.setData({
      msg: this.data.msg + envet.detail.value
    })
    console.log(this.data.msg);
  }
  })

    index.wxml中给文本框设置value属性:

<input type="text" bindinput="inputFcuntion" value="你好"></input>

    文本框中输入内容之后观察控制台打印信息:
在这里插入图片描述

    补充一个遇到的问题:在实现第一个点击事件时,点击按钮控制台输出如下警告信息:Component “pages/index/index“ does not have a method “ 方法名“ to handle event “tap".这个警告的原因有很多,说下我当时的处理方式:将项目中index.ts文件去除即可.当前项目创建默认生成index.ts,index.js都是手动创建的,出现上面的警告应该是解析文件有误导致的。.ts文件是typescript语言,.js是javascript语言,目前逻辑层都是使用.js文件进行逻辑控制!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/18659.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ASEMI代理艾赛斯二极管DSA300I100NA,肖特基DSA300I100NA

编辑-Z 艾赛斯硅肖特基二极管DSA300I100NA参数&#xff1a; 型号&#xff1a;DSA300I100NA 最大重复反向阻断电压&#xff08;VRRM&#xff09;&#xff1a;100V 反向电流、漏极电流&#xff08;IR&#xff09;&#xff1a;3mA 正向电压降&#xff08;VF&#xff09;&…

STM32CubeMX外部中断

建议提前学习&#xff1a;使用STM32CubeMX实现按下按键&#xff0c;电平反转&#xff1b; 目录 EXTI 中断 中断的概念 抢占优先级与响应优先级 中断分组 事件 上升沿&#xff0c;下降沿以及双边沿触发 上升沿&#xff0c;下降沿以及双边沿的概念 上升沿&#xff0c;下…

数据结构-双链表思路解析及代码实现

双链表是单链表的进阶版&#xff0c;单链表是1-2-3-4 一个个排排坐链接&#xff0c;只管向后拉手&#xff0c;其主要思想是当前节点与下一节点的关系&#xff0c;那么双链表就多了一层关系&#xff0c;当前节点不仅和一下一点连起来&#xff0c;也要和上一节点串联起来。与前与…

【全志T113-S3_100ask】13-1 Linux c语言ioctl驱动oled(iic、ssd1306)屏幕

【全志T113-S3_100ask】13-1 Linux C通过ioctl驱动oled[ssd1306]屏幕 背景&#xff08;一&#xff09;i2c关键结构体1、i2c_rdwr_ioctl_data结构体2、struct i2c_msg结构体&#xff08;二&#xff09;i2c关键代码1、写函数2、读函数&#xff08;三&#xff09;对oled的操作&…

深度学习和神经网络的介绍(一)

1、深度学习和神经网络 1.1 深度学习的介绍 目标&#xff1a; 知道什么是深度学习知道深度学习和机器学习的区别能够说出深度学习的主要应用场景知道深度学习的常见框架 1.1.1 深度学习的概念 深度学习是机器学习的分支&#xff0c;是一种以人工神经网络为架构&#xff0c…

计算机网络4小时速成:计算机网络基础,计网组成,计网分类,性能指标,标准化组织,计网结构模型,五层模型

计算机网络4小时速成&#xff1a;计算机网络基础&#xff0c;计网组成&#xff0c;计网分类&#xff0c;性能指标&#xff0c;标准化组织&#xff0c;计网结构模型&#xff0c;五层模型 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&…

05_TCP并发服务器

知识点1【TCP并发服务器】 1、多线程&#xff08;常用&#xff09; 2、解决上述问题&#xff1a;端口复用 仅仅是端口的复用 3、并发服务器 多进程实现 总结&#xff1a; 知识点2【HTTP协议】 HTTP基于TCP 1、HTTP协议的概述 2、Webserver 通信过程 3、Web编程开发 知识…

Cadence orcad 批量设置原理图标题栏

前言 作为一份规范的原理图文件&#xff0c;必须要有Title Block&#xff0c;一般是在右下角的原理图信息&#xff0c;包括标题&#xff0c;图纸尺寸&#xff0c;设计师&#xff0c;时间&#xff0c;页码等等。 这里需要两个操作&#xff1a; 一、批量修改Title Block的信息 …

Go语言进阶篇,单元测试、基准测试的性能测试、内存占用测试

在go语言中的单元测试比较有意思&#xff0c;比如测试一个函数是很方便的&#xff0c;只需要将文件名修改为_test.go这样的后缀即可&#xff0c;我们新建一个目录xxx&#xff0c;然后新建xxx_test.go文件&#xff0c;当然这个xxx的名字你可以按照功能来命名&#xff0c;如下&am…

Java开发:多线程编程

本章篇幅主要记录多线程编程相关的知识&#xff0c;如有纰漏&#xff0c;望指出。 话不多说&#xff0c;正式开启多线程之旅... 目录 一、多线程使用方式 A、Thread B、Runnable&#xff08;推荐&#xff09; C、Callable 二、线程的五个状态 三、线程停止 四、线程休…

LabVIEW性能和内存管理 7 LabVIEW中局部和全局变量的内存分配

LabVIEW性能和内存管理 7 LabVIEW中局部和全局变量的内存分配 本文介绍LabVIEW性能和内存管理的几个建议7。 LabVIEW Cleanup – LabVIEW cleans upmany references when the owning VI goes idle and others when the process closes – Manually closereferences t…

Bean的作用域和生命周期

1. Bean 的作用域 对于全局变量,局部变量等的作用域相信大家都已经很清楚了,但是对于对象作用域有点摸不着头脑,下面通过一个简单的案例,康康对象的作用域 1.1 案例引入 现有一个公共的 Bean 对象 package com.bean.model;import org.springframework.stereotype.Componen…

【IEEE2017】RL:机器人库:一种面向对象的机器人应用程序的方法

RL&#xff1a;机器人库&#xff1a;一种面向对象的机器人应用程序的方法 摘要&#xff1a; 摘要&#xff1a;我们讨论了机器人库&#xff08;RL&#xff09;的架构和软件工程原理。在机器人系统、研究项目、工业应用和教育的需求的驱动下&#xff0c;我们确定了相关的设计需求…

linux上如何搭建Java环境

一 linux软件安装常用的方式对比 Linux下的软件安装&#xff0c;主要有如下三种&#xff0c;“正规”程度依次递减&#xff1a; 1、使用标准的yum/apt/yast包管理程序安装 2、使用标准rpm/deb或厂商自己的安装包&#xff08;比如nVidia的显卡驱动用的bin包&#xff09;安装 …

黑*头条_第2章_文章列表前端成形与后端变身

黑*头条_第2章_文章列表前端成形与后端变身 文章目录黑*头条_第2章_文章列表前端成形与后端变身文章列表前端成形与后端变身学习目标1.前端工程结构1.1 环境准备1.1.1 导入工程1.1.2 测试运行1.2 weex 跨终端前端框架1.3 工程结构说明1.4 源码结构1.5 WEEX UI2.文章列表前端开发…

算法实验题(涉外黄成老师!!!)

日期 2022.11.19 目录 实验报告一 第一题 2 实验报告二 第二题 3 实验报告三 第三题 4 实验报告四 第四题 5 实验报告五 第五题 6 实验报告六 第六题 7 实验报告一 第一题 一、实验目的 由1&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;7&#xff0c;8这六个数字所组…

剑指 Offer II 021. 删除链表的倒数第 n 个结点【链表】

难度等级&#xff1a;中等 上一篇算法&#xff1a; 82. 删除排序链表中的重复元素 II【链表】 力扣此题地址&#xff1a; 剑指 Offer II 021. 删除链表的倒数第 n 个结点 - 力扣&#xff08;LeetCode&#xff09; 1.题目&#xff1a;删除链表的倒数第 n 个结点 给定一个链表&a…

DWGViewX Pro 2021.4.X Crack by Cracki

DWGViewX pro 2021.4.X --Ω578867473 DWGViewX 是一个 ActiveX 组件&#xff0c;可让您在一个查看器中管理和查看 DWG、DXF 和 DWF 工程图。查看 R14 到 2022 版本的 DWG、DXF 和 DWF。加载本地磁盘或网络网站上的图纸&#xff0c;并使用查看器缩放、平移、旋转图纸、打开/关闭…

Java中的线程

线程 什么是线程&#xff1a; 什么是多线程&#xff1a; 学习目的&#xff1a; 多线程的创建 方式一&#xff1a;继承Thread类 public class MyThread{public static void main(String[] args) {Thread thread01 new Thread01();thread01.start();for (int i 0; i < 5; …

翻倍增长!C-V2X商业化“提速”,新一代模组加速“助跑”

C-V2X正在逐步走向商业的规模化部署&#xff0c;由此也带动了C-V2X模组需求的高速增长。 高工智能汽车研究院监测数据显示&#xff0c;今年1-9月中国市场&#xff08;不含进出口&#xff09;乘用车前装标配搭载V2X技术新车交付上险为10.58万辆&#xff0c;同比增长283.33%&…