uni-app入门:常用事件绑定与数据同步
创始人
2024-02-02 17:12:28
0

     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:


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

1.2 文本输入事件bindinput

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

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

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

文本输入区域:

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

1.3 切换事件bindtouchend

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

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

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





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

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中按钮添加点击事件:


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

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

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

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

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

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

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


    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属性:


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

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

相关内容

热门资讯

有趣的事情作文 有趣的事情作文200字(精选20篇)  在学习、工作、生活中,大家或多或少都会接触过作文吧,借助作文...
云优秀作文 云优秀作文云优秀作文1  深秋那湛蓝湛蓝的天空上,团团白云像棉花一样在空中无忧无虑地漂浮着。  那牛...
企鹅作文 企鹅作文  企鹅是唯一不能飞的潜水性海鸟。共有17个品种,分布在南半球,南极数量极多。  企鹅的头、...
雨中即景作文 雨中即景作文(精选10篇)  无论是在学校还是在社会中,说到作文,大家肯定都不陌生吧,写作文是培养人...
描写秋晨的作文 描写秋晨的作文(通用36篇)  在我们平凡的日常里,大家都不可避免地会接触到作文吧,作文根据体裁的不...
柳暗花明作文700字 柳暗花明作文700字(通用49篇)  在学习、工作乃至生活中,许多人都写过作文吧,作文是由文字组成,...
威风的孟加拉虎作文 威风的孟加拉虎作文  10月1日 星期二 天气晴  威风的孟加拉虎  今天中午,我和妈妈一起来到动物...
兴趣作文600字 兴趣作文600字4篇  在学习、工作、生活中,大家都不可避免地会接触到作文吧,作文根据写作时限的不同...
2022启航作文 2022启航作文(精选12篇)  在平平淡淡的日常中,大家都尝试过写作文吧,作文是由文字组成,经过人...
成长作文600字 关于成长作文600字4篇  在我们平凡的日常里,大家都不可避免地会接触到作文吧,作文要求篇章结构完整...
成长标准的议论文 成长标准的议论文  在现实的学习、工作中,说到论文,大家肯定都不陌生吧,论文是对某些学术问题进行研究...
孤独记叙文 孤独记叙文  相信大家都尝试过写作文吧,特别是作文中不可忽视的记叙文,记叙文的样式有消息、通讯、游记...
校庆的800字作文 校庆的800字作文(精选8篇)  在日常生活或是工作学习中,大家总免不了要接触或使用作文吧,作文是通...
难忘的一堂课作文500字 难忘的一堂课作文500字(精选10篇)  在平平淡淡的日常中,大家都不可避免地会接触到作文吧,作文一...
猜猜她是谁300字作文 猜猜她是谁300字作文(通用31篇)  在生活、工作和学习中,大家都写过作文吧,作文一定要做到主题集...
行走在消逝中作文700字 行走在消逝中作文700字  消逝,是一个令人怅惘的词语,它可以标志着国家文明的消亡,也可以表达人离去...
以悔为题的作文 以悔为题的作文(精选35篇)  在现实生活或工作学习中,大家最不陌生的就是作文了吧,作文是人们把记忆...
杨梅树作文400字 杨梅树作文400字  无论在学习、工作或是生活中,大家一定都接触过作文吧,通过作文可以把我们那些零零...
桃花的作文450字 桃花的作文450字  无论在学习、工作或是生活中,大家都接触过作文吧,写作文可以锻炼我们的独处习惯,...
教训作文400字 教训作文400字(精选39篇)  在平时的学习、工作或生活中,大家都跟作文打过交道吧,写作文可以锻炼...