【微信小程序】数据监听器,纯数据字段

news2025/1/18 20:06:17

在这里插入图片描述

一、数据监听器

1.1 什么是数据监听器

数据监听器用于 监听和响应任何属性和数据字段的变化,从而执行特定的操作 。它的作用类似于 vue 中

的 watch 侦听器。在小程序组件中,

在componets中新建一个test2文件夹在文件夹里新建component

在app.json usingComponents中 添加组件目录:

数据监听器的基本语法格式如下:

1.2 数据监听器的基本用法

"usingComponents": {
"my-test1":"/components/test/test",
"my-test2":"/components/test2/test2",
},
Component({
observers:{
'字段A,字段B': function(字段A的新值,字段B的新值)
//do something
}
})

组件的 .js 文件

<!--components/test2/test2.wxml-->
<view>{{n1}} + {{n2}} = {{sum}}</view>
<button bindtap="addN1">n1+1</button>
<button bindtap="addN2">n2+1</button>
// components/test2/test2.js
Component({
/**
* 组件的初始数据
*/
data: {
n1:0,
n2:0,
sum:
},

/**
* 组件的方法列表
*/
methods: {
addN1(){
this.setData({
n1:this.data.n1 + 1
})
},
addN2() {
this.setData({
n2:this.data.n2 + 1
})
}
},
// 数据监听节点
observers:{
'n1,n2':function(new1,new2){ //监听 n1 和 n2数据的变化
this.setData({ // 通过监听器,自动计算sum的值
sum: new1 + new
})
}
}
})

1.3 监听对象属性的变化

数据监听器支持监听对象中 单个 或 多个属性 的变化,示例语法如下:

二、数据监听器

在componets中新建一个test3文件夹在文件夹里新建component
在app.json usingComponents中 添加组件目录:

Compoent({
observers:{
'对象.属性A,对象.属性B'function(属性A的新值,属性B的新值){
// 触发此监听器的 3 种情况
// [为属性A赋值]使用 setData 设置this.data.对象.属性A 时触发
// [为属性B赋值] 使用setData 设置 this.data.对象.属性B 时触发
// [直接为对象赋值] 使用setData 设置this.data对象 时触发
// do something
}
}
})

.wxml 结构 .wxss 样式

"usingComponents": {
"my-test1":"/components/test/test",
"my-test2":"/components/test2/test2",
"my-test3":"/components/test3/test3"
}
// components/test3/test3.js
Component({
/**
* 组件的初始数据
*/
data: {
rgb:{ // rgb 的颜色值对象
r:0,
g:0,
b:
},
fullColor: '0, 0, 0' //根据rgb对象的三个属性,动态计算fullColor 的值
},
})
<!--components/test3/test3.wxml-->
<view style="background-color:rgb({{fullColor}});"class="colorBox">颜色值:
{{fullColor}}</view>
<button size="mini" type="default" bindtap="changeR">R</button>
<button size="mini" type="primary" bindtap="changeG">G</button>
<button size="mini" type="warn" bindtap="changeB">B</button>
<view>{{rgb.r}},{{rgb.g}},{{rgb.b}}</view>
/* components/test3/test3.wxss */
.colorBox {
line-height: 200rpx;
font-size:24rpx;
color:white;
text-shadow:0rpx 0rpx 2rpx black;
text-align:center;
}

2.1 监听对象中指定属性的变化

// components/test3/test3.js
Component({
/**
* 组件的方法列表
*/
methods: {
changeR(){ //修改 rgb 对象上 r属性的值
this.setData({
'rgb.r':this.data.rgb.r + 5 > 255? 255 : this.data.rgb.r +
5
})
},
changeG(){ // 修改rgb对象上r属性的值
this.setData({
'rgb.g':this.data.rgb.g + 5 >255 ?255 :this.data.rgb.g +
})
},
changeB(){//修改 rgb对象上b属性的值
this.setData({
'rgb.b':this.data.rgb.b + 5 > 255? 255 :this.data.rgb.b +
})
}
}
})

2.2 监听对象中所有属性的变化

如果某个对象中需要被监听的属性太多,为了方便,可以使用 通配符 ** 来 监听 对象 中所有属性的变化,代码结构如下

observers:{
// 监听rgb 对象上 r,g,b 三个属性的变化
'rgb.r,rgb.g, rgb.b':function(r,g,b){
this.setData({
//为data中的fullColor 重新赋值
fullColor:`${r},${g},${b}`
})
}
}
observers:{
// 监听rgb 对象上 所有属性的变化
'rgb.**':function(obj){
this.setData({
fullColor:`${obj.r},${obj.g},${obj.b}`
})
}
}

三、纯数据字段

3.1 什么是纯数据字段

概念: 纯数据字段 指的是那些 不用于界面渲染的 data 字段。

应用场景:例如有些情况下,某些 data 中的字段 既不会展示在界面上,也不会传递给其他组件 ,仅仅在当前组件内部使用。带有这种特性的 data 字段适合被设置为纯数据字段。
优点:纯数据字段 有助于提升页面更新的性能。

3.2 使用规则

在 Component 构造器的 options 节点中,指定 pureDataPattern 为一个 正则表达式 ,字段名符合这个正则表达式的字段将成为纯数据字段,示例代码如下:

3.3 使用纯数据字段改造数据监听器

Component({
options: {
// 指定所有 _ 开头的数据字段为纯数据字段
pureDataPattern:/^_/
},
data: {
a:true, // 普通数据字段
_b:true, // 纯数据字段
}
}
})
// components/test3/test3.js
Component({
options:{
// 指定所有_ 开头的数据字段为纯数据字段
pureDataPattern:/^_/
}

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

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

相关文章

C学习笔记3

1、将一个整数转换成二进制形式&#xff0c;就是其原码。&#xff08;通俗的理解&#xff0c;原码就是一个整数本来的二进制形式。&#xff09; 例如short a 6;a 的原码就是0000 0000 0000 0110 2、反码就区分正负数&#xff0c;因为正负数的反码是不一样的&#xff0c;正数…

2023年MathorCup数模D题赛题解题思路

MathorCup俗称妈杯&#xff0c;是除了美赛国赛外参赛人数首屈一指的比赛&#xff0c;而我们的妈杯今天也如期开赛。今年的妈杯难度&#xff0c;至少在我看来应该是2023年截至目前来讲最难的一场比赛。问题的设置、背景的选取等各个方面都吐露着我要难死你们的想法。难度是恒定的…

Euro-NCAP 2030愿景

每隔五年,Euro NCAP都会将利益相关者聚集在一起,研究当前的汽车技术现状,预测未来几年可能的挑战,并确定未来的机会所在。讨论的结果是该组织的未来发展方向和明确的未来愿景:Euro NCAP 2030年愿景。 2020年初,Euro NCAP开始制定一套新的战略目标,打算在下一年公布其《2…

STM-32:SPI通信协议/W25Q64简介—软件SPI读写W25Q64

目录 一、SPI简介1.1电路模式1.2通信原理1.3SPI时序基本单元1.3.1起始和终止1.3.2交换字节 二、W25Q642.1W25Q64简介2.2W25Q64硬件电路2.3W25Q64框图2.4Flash操作注意事项 三、软件SPI读写W25Q643.1接线图3.2程序代码 一、SPI简介 SPI是串行外设接口&#xff08;Serial Periph…

Spring Boot异步任务、异步消息

目录 1.异步任务 1.1.概述 1.2.使用 2.异步消息 2.1.概述 2.2.使用 1.异步任务 1.1.概述 举一个例子&#xff0c;我现在有一个网上商城&#xff0c;客户在界面点击下单后&#xff0c;后台需要完成两步&#xff1a; 1.创建客户订单 2.发短信通知客户订单号 这里面第2…

selenium 连接已经打开的chrome浏览器 MAC

selenium 连接已经打开的chrome浏览器 MAC 一&#xff0c;前言 今天在爬取chatGPT的谷歌插件的prompts的时候&#xff0c;发现绕不过他的反爬机制&#xff0c;失败111&#xff0c;所以想用连接已打开的chatGPT页面进行控制 二&#xff0c;具体步骤 1&#xff0c;添加环境变…

Android入门

一、Android系统架构 Android大致可以分为4层架构&#xff1a;Linux内核层、系统运行库层、应用框架层和应用层 1.1Linux内核层 Android系统是基于Linux内核的&#xff0c;这一层为Android设备的各种硬件提供了如显示、音频、照相机、蓝牙、Wi-Fi等底层的驱动。 1.2系统运行层…

2023MathorCup 高校数学建模挑战赛D题思路解析

如下为MathorCup 高校数学建模挑战赛D题思路解析&#xff1a; D 题 航空安全风险分析和飞行技术评估问题 飞行安全是民航运输业赖以生存和发展的基础。随着我国民航业的快速发展&#xff0c;针对飞行安全问题的研究显得越来越重要。2022 年 3 月 21 日&#xff0c;“3.21”空难…

如何使用vim的插件Ctags查看Linux源码

一.ubuntu下安装Linux内核源码 (1).查看自己的内核版本 (2).查看源内的内核源码类表 (3).下载源码 (4).进入/usr/src (5).解压下载的文件到用户主 二.安装vim插件Ctags和使用 插件的介绍 Ctags工具是用来遍历源代码文件生成tags文件&#xff0c;这些tags文件能被编辑器或其它工…

2023年的深度学习入门指南(4) - 在你的电脑上运行大模型

2023年的深度学习入门指南(4) - 在你的电脑上运行大模型 上一篇我们介绍了大模型的基础&#xff0c;自注意力机制以及其实现Transformer模块。因为Transformer被PyTorch和TensorFlow等框架所支持&#xff0c;所以我们只要能够配置好框架的GPU或者其他加速硬件的支持&#xff0…

同为科技(TOWE)防雷科普篇1—雷电灾害认识与雷电预警信号解读

前 言 雷电是自然界最为壮观的大气现象之一。其强大的电流、炙热的高温、猛烈的冲击波以及强烈的电磁辐射等物理效应能够在瞬间产生巨大的破坏作用&#xff0c;常常导致人员伤亡&#xff0c;击毁建筑物、供配电系统、通信设备&#xff0c;造成计算机信息系统中断&#xff0c;引…

电风扇出口欧美CE/UL507认证办理

电风扇简称电扇&#xff0c;是一种利用电动机驱动扇叶旋转&#xff0c;来达到使空气加速流通的家用电器&#xff0c;主要用于清凉解暑和流通空气。风扇主要由扇头、叶片、网罩和控制装置等部件组成。电风扇的主要部件是:交流电动机。其工作原理是:通电线圈在磁场中受力而转动。…

Streamlit 中函数多次进入的问题

Streamlit 函数多次进入的问题 Streamlit 学习的背景重要案例心得踩坑或注意点 Streamlit 学习的背景 最近在学习ai相关的知识&#xff0c;同时需要做一些方便使用的web网页。 例如&#xff1a;调用chatGPT的api&#xff0c;做对话窗。 之前用过gradio, 但是发现在手机端上&am…

NestJS:理解ORM(Object Relational Mapping)

一、理解ORM(Object Relation Mapping) ORM是对象—关系映射&#xff08;Object/Relation Mapping&#xff0c;ORM&#xff09;是为了解决面向对象与关系数据库存在的互不匹配现象而产生的技术。业务实体在内存中表现为对象&#xff0c;在数据库中表现为关系数据。ORM通过使用描…

【网络技术】HULK攻击实验

一、重要声明 请勿攻击公网&#xff01;请勿攻击公网&#xff01;请勿攻击公网&#xff01; 一切责任自负&#xff01;一切责任自负&#xff01;一切责任自负&#xff01; 二、工具介绍 HULK&#xff08;Http Unbearable Load King&#xff0c;字面意思是“不能承受的HTTP&a…

项目三:双人骰子

项目三&#xff1a;双人骰子 文章目录 项目三&#xff1a;双人骰子一、导入(5分钟&#xff09;学习目的 二、新授(65分钟)1.预展示结果(5分钟)2.本节课所用的软硬件(5分钟)3.硬件介绍(1分钟)4.图形化块介绍(1分钟)5.单个模块的简单使用(1分钟)6.双人骰子编程逻辑分析(30分钟)7.…

Faster RCNN系列——RoI Pooling与全连接层

在RPN网络中&#xff0c;已经计算过一次类别真值与类别预测值、偏移量真值与偏移量预测值之间的损失值&#xff0c;但这里的类别预测值只包含两类&#xff1a;前景和背景。 RPN网络输出的Proposal作为生成的区域&#xff0c;继续在后续的RoI Pooling和全连接层中进行分类与回归…

企业电子招投标系统源码之电子招投标系统建设的重点和未来趋势

项目说明 随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大&#xff0c;公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境&#xff0c;最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范&#xff0c;以及…

性能优化3-分帧寻路+寻路任务统一管理

前言 当项目里的地图越来越大&#xff0c;一些性能上的问题开始逐渐出现&#xff0c;比如寻路。玩家在操控角色移动的时候&#xff0c;指引需要实时更新&#xff0c;同时一些npc也需要做移动&#xff0c;容易出现cpu占用率短时间过高&#xff0c;甚至掉帧的情况。 去年底的时候…

ChatGPT,音乐,与数据库

小编君是个不务正业&#xff0c;喜欢搞跨界&#xff0c;干啥啥不成的DBA&#xff0c;大概在十一年前就有个不成熟的妄念&#xff0c;能否用计算机来写音乐&#xff1f; ▌用ChatGPT来搞音乐&#xff1f; 音乐是一个个的音符&#xff0c;按照乐理规则排列的。音符之间是否和谐…