uni-app入门:常用事件绑定与数据同步

news2024/10/7 12:19:18

     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/19913.html

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

相关文章

Android 基础知识1-开发环境搭建

1.1 Android开发准备工作 配置Android开发环境之前&#xff0c;首先需要了解Android对操作系统的要求。它可以使用Windows XP 已经以上版本、Mac OS 、Linux等操作系统&#xff0c;我是以Windows系统为例学习以及开发的。 1.2 开发包以及其工具的安装和配置 Android以Java作为…

内蒙古工程学院无线网络设计与规划

摘 要 I ABSTRACT II 第1章 绪论 1 1.1选题背景及意义 1 1.1.1选题背景 1 1.1.2选题意义 1 1.1.3国内外研究现状 2 1.2需求分析 3 1.2.1建设背景 3 1.2.2总体建设目标 4 1.2.4具体实施目标 5 1.3校园无线网在教育中的发展 6 第2章 无线网络的应用 7 2.1 无线网络的概述 7 2.1.1…

【毕业设计】60-基于ZigBee无线智能消防\烟雾报警逃生系统设计(原理图工程、源代码、低重复率参考文档、实物图)

【毕业设计】60-基于ZigBee无线智能消防\烟雾报警逃生系统设计&#xff08;原理图工程、源代码、低重复率参考文档、实物图&#xff09; 文章目录【毕业设计】60-基于ZigBee无线智能消防\烟雾报警逃生系统设计&#xff08;原理图工程、源代码、低重复率参考文档、实物图&#x…

Mybatis的一级缓存

目录前置生效场景一场景二失效场景一场景二场景三场景四场景五前置 什么是一级缓存: mybatis 默认开启一级缓存, SQLSession会话缓存, 每个SQLSession都会有各自的缓存 以下会演示一级缓存生效/失效的场景 项目地址: https://gitee.com/xmaxm/test-code/blob/master/chaim-cac…

初识golang微服务框架kratos

前言 今天给大家介绍一下Kratos&#xff0c;Kratos 一套轻量级 Go 微服务框架&#xff0c;包含大量微服务相关框架及工具,使用Kratos的原因主要是感觉原来使用的go-kit工具并不是很方便&#xff0c;期望用上kratos后开发会更快捷一些。 Kratos名字根据官方的説法是来源于:《战…

灵界的科学丨六、星际通信新科技──寻找外星人

摘自李嗣涔教授《灵界的科学》 外星先进文明科技领先地球的关键&#xff0c; 是外星人掌握了意识的物理&#xff0c; 能够制造仿照天眼的仪器&#xff0c; 自由进出虚数空间遨游宇宙&#xff0c;同时创造出瞬间科技。 人类未来学习的典范&#xff0c;就在天上无数的外星先进…

数据结构--线性表之顺序表

1.线性表定义 线性表&#xff08;List&#xff09;&#xff1a;零个或多个数据元素的有限序列。 线性表的数据集合为{a1,a2,…,an}&#xff0c;假设每个元素的类型均为DataType。其中&#xff0c;除第一个元素a1外&#xff0c;每一个元素有且只有一个直接前驱元素&#xff0c…

第三十三篇 transition-group 列表过渡

上一篇内容讲到的是transiotion&#xff0c;其中还记得有一个报错吗&#xff1f;如下&#xff1a; 先来回顾一下&#xff0c;<transition> 只能用于单个元素&#xff0c;如果在<transition>单中并列两个<p>标签&#xff0c;那么这样一来就会报以上这个错误&a…

六、表空间管理

六、表空间管理 1、查看表空间 使用DM Manager工具&#xff1a; 代码&#xff1a; -- 1、查看表空间名 select tablespace_name FROM SYS.DBA_TABLESPACES;-- 2、查看表空间名、表空间对应的数据文件地址、状态 select tablespace_name,file_name,status FROM dba_data_files;…

软件定义汽车产业生态创新白皮书

1 什么是软件定义汽车 1.1 驱动因素 汽车“新四化”的发展需要软件的加持 据大众汽车公开披露信息&#xff0c;未来平均每辆普通汽车软件代码量超 1 亿行。在电动化、智能化和网联化等的发展推动下&#xff0c;汽车将加速向高度数字化、信息化、智能化的移动终端发展。座舱娱…

CM311-1_YST_S905L3(B)_安卓9.0_设置无密码_默认打开adb_完美AI语音_线刷固件包

CM311-1_YST_S905L3(B)_安卓9.0_设置无密码_默认打开adb_完美AI语音_线刷固件包 固件特点&#xff1a; 1、修改dns&#xff0c;三网通用&#xff1b; 2、开放原厂固件屏蔽的市场安装和u盘安装apk&#xff1b; 3、无开机广告&#xff0c;无系统更新&#xff0c;不在被强制升…

LX12864P1屏幕使用介绍(ST7567驱动),显示横线、字符、图形

LX12864P1屏幕显示&#xff08;ST7567驱动&#xff09; 可编辑12864液晶模组&#xff0c;也就是液晶显示屏是有128*64个点阵组成。12864是一种图形点阵液晶显示器&#xff0c;它主要采用动态驱动原理由行驱动—控制器和列驱动器两部分组成了128(列)64(行)的全点阵液晶显示此显…

全国地级市城镇化和协调发展指数测算数据(2005-2019)六份数据

全国地级市城镇化和协调发展指数测算数据&#xff08;2005-2019&#xff09;六份数据 1、范围&#xff1a;受数据限制&#xff0c;剔除了新疆和西藏的城市共包括287个地级市 2、时间区间为&#xff1a;2005-2019年 3、六分数据包括&#xff1a; 地级市城镇化发展水平&#…

多线程入门

多线程简介 1. 进程/线程 # 进程 - 进程由指令和数据组成&#xff0c;指令要运行&#xff0c;数据要读写&#xff0c;必须将指令加载到CPU&#xff0c;数据加载到内存。指令运行过程中还需要用到磁盘&#xff0c;网络等IO设备 - 进程用来加载指令&#xff0c;管理内存&#x…

CentOS7 安装rabbitMQ步骤

全程使用root权限 1、修改主机名称 hostnamectl set-hostname rmq158 2、输入命令&#xff1a;vi /etc/hosts修改hosts文件 3、重启 4、WINSCP传输两个包到/usr/local下面 5、tar -xvf otp_src_21.3.tar.gz cd otp_src_21.3 ./configure --prefix/usr/local/erlang 6、yum i…

教学:制作 GitHub 同步近期博客卡片

这几天看到有小伙伴将自己近期更新的博客同步显示到了 GitHub 主页&#xff0c;这么有趣的小卡片我是一定要尝试一把的&#xff0c;完整的教程我已经整理好了&#xff0c;一起搞起来吧~ 2. 开始教程 2.1 实现流程&#xff1a; Github 的主页装修主要讲的就是主页的 Markdown 文…

Spring Security自定义验证码登录

本文内容来自王松老师的《深入浅出Spring Security》&#xff0c;自己在学习的时候为了加深理解顺手抄录的&#xff0c;有时候还会写一些自己的想法。 验证码登录也是项目中一个常见的需求&#xff0c;但是Spring Security并未提供自动化配置方案。所以需要开发者自行定义。这里…

Spring的创建和使用

1. 创建Spring项目 1.1 创建一个 Maven 项目 不需要使用任何模板, 点击下一步.注:所有的名称都不能包含中文.Maven仓库中的结构: 1.2 添加 Spring 框架支持 在Spring 的 配置文件 中添加依赖 spring-context: Spring的上下文spring-beans: 管理Spring对象(bean) <depende…

36、异常(Exception)

一、 引入: 不应该出现了一个不算致命的问题就导致整个系统崩溃&#xff0c;所以java设计者提供了一个异常处理机制来解决问题 快速入门&#xff1a; package exception_;public class Exception01 {public static void main(String[] args) {int num110;int num20;//异常处…

软件工程复习

文章目录&#xff08;一&#xff09;软件软件发展三阶段软件的概念什么是软件危机&#xff1f;内容包括&#xff1a;软件危机的表现&#xff1a;软件危机的原因(4)消除软件危机的途径&#xff1a;软件工程软件工程定义&#xff08;要背&#xff09;简称&#xff1a;软件工程的基…