js中怎么获取某个属性的值_小程序中 setData 详解

article/2025/8/27 2:46:45

前言

在小程序中各个页面之间是相互独立的,一个页面分为渲染层(视图层 webview),逻辑层(JavaScript),系统层(底层),在架构上,WebView和 JavascriptCore 都是独立的模块,并不具备数据直接共享的通道,换而言之,若要将逻辑层中的data的数据渲染到页面中,他们之间是无法直接通信的,往往需要系统层作为中间角色

我们都知道视图层的数据来源于逻辑层 data,而视图图层若想要改变逻辑层 data 的数据,需要借助setData这个方法去触发,以达到更新视图层的数据,具体的工作过程是怎么样的?

setData 是什么

定义: 设置数据,更改数据

作用: setData函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的this.data的值(同步)

仔细细品这句话,会包含了很多信息

  • setData它是微信小程序提供的一个内置的接口,是用于改变逻辑层中data下的数据的
  • 视图层 view的数据挂载在逻辑层的data下,发送到视图层中是异步的
  • 改变this.data是同步,换句话说,若直接修改 this.data 而不调用 this.setData方法,是无法改变页面的状态的,还会造成数据不一致
dc1db462b4d2fadf8947cdd7227894a8.png

从上面的这张图中就可以看到,当逻辑层data数据渲染到界面的时候,逻辑层的数据需要经过系统层,当系统层接收到这个逻辑层的数据后

系统层在把数据转发给渲染层,然后在渲染层展示出来,在这个过程当中是异步的

视图层和逻辑层的数据传输,实际上通过两边提供的JavScript Core所实现,即用户传输的数据,需要将其转换为字符串形式传递,同时把转换后的数据内容拼接成一份 JS 脚本,再通过执行 JS 脚本的形式传递到两边独立的环境

setData 接收两重要参数

从官方文档中看到这句Page.prototype.setData(Object data, Function callback),得知,setData方法是挂载当前页面实例Page原型下一个公用实例方法


http://chatgpt.dhexx.cn/article/CcJDYvYA.shtml

相关文章

小程序 setData 动态 key 的写法

setData 是小程序开发中使用最频繁的接口,也是最容易引发性能问题的接口。 本篇文章主要说一说 setData 的正确使用 和 动态 key 的使用。 目录 Page.prototype.setData(Object data, Function callback) #1 什么时候应该使用 setData 函数? #2 常用的…

小程序setData函数小探究

官方文档可以知道 setData函数改变Page的data是同步的,会异步通知视图层data的改变,视图层收到通知后进行渲染。即官方文档里生命周期的Send Data箭头 callback分析 先上代码: Page({data: {theData: 1},onLoad: function(options) {conso…

微信小程序中this.setData is not a function报错问题

微信小程序中this.setData is not a function报错问题 新手在编写小程序时经常会遇到的一种错误。 新手在编写小程序时经常会遇到的一种错误。 在小程序中,通常我们用setData修改数据,用于函数时不会报错。 eg. setData function(e){this.setData({mob…

小程序中this.setData的使用和注意事项

前言:微信小程序中经常需要用到this.setData({})把变量值渲染到视图层,那到底什么是this.setData,如何使用?需要注意哪些?作为一个初学者,分享一点我的经验,希望大家批评指正。 介绍&#xff1a…

微信小程序setData()方法的使用

官方解释: setData 函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的 this.data 的值(同步)。 自己通俗的理解就是给数据复制用的, 结合一个demo说下setdata的使用 不如点击确定按钮把当前的值显示的布局中…

android setdata方法,Android intent.setData方法

1 从文本框中获取内容 EditText mobileText (EditText)findViewById(R.id.mobile); String mobile mobileText.getText().toString(); 2 打电话的权限 在功能清单中加入代码 编写代码实现Button的点击相应 Intent intent new Intent(); intent.setAction("android.inte…

微信小程序中 setData 详解

虽互不曾谋面,但希望能和您成为笔尖下的朋友 以读书,技术,生活为主,偶尔撒点鸡汤 不作,不敷衍,意在真诚吐露,用心分享 点击左上方,可关注本刊 标星公众号(ID:itclanCoder) 如果不知道如何操作 点击这里,标星不迷路 ━━━━━━ ━━━━━━…

微信小程序————setData()方法的使用和注意事项

微信小程序setData()使用: ##Page.prototype.setData(Object data, Function callback) setData 函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的 this.data 的值(同步)。 参数说明: …

微信小程序setData注意事项,使用方法

1..微信小程序开发中,为了减少data和视图层数据表现不一致,全部采用setData方法修改值。 setData函数注意事项 1..直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致。 2..单次设罟的数据不能超过1024kB&…

layui自定义table中的templet

1.效果图如下 2.后端返回数据如下 3.实现代码如下 {field: "triggerPara",title: "触发参数",templet: function (d) {let text"" , type;for(let i 0 ; i < d.triggerPara.length ; i ){if(d.triggerPara[i].type 0){type 门禁}else i…

layui table 更新行触发templet重新渲染

更新方法 obj.update({// 这里的字段必须要在 table.render.cols.filed 有定义&#xff0c;否则无法触发表格渲染// key 决定是否重新渲染某一列&#xff0c;value 由 templet 里的语句进行逻辑处理canView: !data.canView }); , {field: canView, title: 操作, toolbar: #te…

layui2.4.5版本解决table使用templet导出数据问题

在使用 table 自带的导出功能时对使用了templet的数据导出为空 使用较高的版本可以解决此类问题&#xff1a;https://gitee.com/layui/layui/issues/I40UJ9 但是此文章中的项目比较老以及页面功能都比较多升级layui版本可能会影响比较大&#xff0c;所以就对layui源码进行微调…

layui表格使用自定义模板templet

前言 在前文 layuispringboot实现表格增删改查 中&#xff0c;我们展示了如何使用layui将数据库数据渲染到前端表格中&#xff0c;但现在问题来了&#xff0c;如果不加特殊处理&#xff0c;前端表格直接显示数据库存储信息是不合适的&#xff0c;例如数据库有一个类型字段&…

layui 动态表格 templet模板函数

1&#xff0c;需求说明 关于动态标题栏的相关知识跳转链接&#xff1a;layui 静态 动态复杂多表头 2&#xff0c;尝试的用法 var chenbenkemuList${chenbenkemuList};var columnAry[]for (var i 0; i < chenbenkemuList.length; i) {var onechenbenkemu chenbenkemuList[…

layui:templet

在使用layui-table的时候,由于它每次都是动态刷新,无法保存我们做的一些页面上元素的修改。 我希望我设置完默认地址之后,下次访问应该是和这次一样变成了灰色的。 这个时候要用到templet,官方文档中的{{d}}就是table获取回来的data,直接做判断,设置样式即可! <

LayUi 之 templet

templet是什么东西&#xff1f; 我们都知道LayUi中有模板&#xff0c;就是把我们需要展示的东西放在模板中展示&#xff0c;你就比如我们想要展示一些数据&#xff0c;但是这些数据不是我们想要的数据或者不是我们想要的样子&#xff0c;这个时候我们可以通过模板前端更改一下…

Jstack线程状态BLOCKED/TIMED_WAITING/WAITING解释

一、线程5种状态 1.新建状态&#xff08;New&#xff09; 新创建了一个线程对象。 2.就绪状态&#xff08;Runnable&#xff09; 线程对象创建后&#xff0c;其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中&#xff0c;变得可运行&#xff0c;等待获取C…

java线程状态(六种五种)

java线程的状态常见的有两种说法&#xff0c;一种是将其分为6种一种是分为5种 1. 六种&#xff1a; 划分依据&#xff1a;主要是从java代码的角度来进行划分。 1. 新建状态 &#xff1a; 使用new关键字创建一个thread对象&#xff0c;刚刚创建出的这个线程就处于新建状态。在…

统计Java进程中的线程状态(jstack+linux)

统计Java进程中的线程状态 第一步&#xff1a;查看Java进程ID 第二步&#xff1a;使用jstack命令dump线程信息&#xff0c;看看pid45890进程中的线程都是什么状态 /usr/local/java/jdk1.8.0_144/bin/jstack 84976 >/opt/test.dump第三步&#xff1a;统计所有线程分别处于什…