微信小程序中data-key属性之数据传输(经验总结)


Posted in Javascript onAugust 22, 2020

本文是总结的一点经验之谈

啥是data-key

微信小程序推出 data- 属性——自定义属性,为了更好的进行数据传递。
总结来说,data-key="{{...}}" 是获取页面中需要用的数据,往js文件(事件)中传—— 被绑定在其组件上的事件使用 也就是常说的:dataset;(比如:wx:for的view中的每一个项的name属性值)
data-key="..." 是从data传到wxml页面中,一般都是在data中存在的属性才这样做,它就是为了“动态修改”data中的属性。

  • 只有data-*传的值才能在事件中被dataset接收,其余的“{{}}”只能使用
  • detaildata-*中不带{{}}时一般都是写好的值,只是用作:不必用data中的数据!

怎么接收data-*的值

如下:

<view bindtap="SetData" data-name="mxc" data-age="18">
 获取数据
</view>

js中:

Page({
 data:{
 name:'',
 age:0
 },
 SetData:function(e){
 console.log(e);
 this.setData({
  name:e.target.dataset.name
 });
 console.log(this.data.name);
 }
})

下面来说几点问题:

上面的程序,在控制台输出:data中的值在event.target.dataset中

微信小程序中data-key属性之数据传输(经验总结)

我们看到,如愿以偿。

那能不能再currentTarget中输出?

准确的说,是:能不能获取currentTarget中的值?
那肯定可以啦!

我们来看官方文档:

微信小程序中data-key属性之数据传输(经验总结)

从中可以看出一个很严重的问题:当前组件触发事件组件
我们都知道,触发事件有 bindtapcatchtap 两种。其中,bindtap可向上(父组件)传递事件
明白了吧?
一般来说, 要想更精确,就用currentTarget;要在一个大组件中有多个触发事件,就可以用target减少事件定义

说说data-绑定数据的坑

你如果在wxml中这么写

<view bindtap='like' data-id='{{laugh.id}}' data-createdBy='{{laugh.created_by}}'>

然后在js中接收:

like(e){
 console.log(e.currentTarget.dataset['createdBy']);
 }

是会出大问题的:它报undefined!

在组件中可以定义数据,这些数据将会通过事件传递给 SERVICE。 书写方式: 以data-开头,多个单词由连字符-链接,不能有大写(大写会自动转成小写)如data-element-type,最终在 event.currentTarget.dataset 中会将连字符转成驼峰elementType。

也就是说小程序自动转了,会把下划线转为大写,大写转为小写。。。(不知道坑了多少人)

like(e){
 console.log(e.currentTarget.dataset['createdby']);
 }

改过之后,世界一片清净…

总结

Javascript 相关文章推荐
jquery 模式对话框终极版实现代码
Sep 28 Javascript
jQuery 锚点跳转滚动条平滑滚动一句话代码
Apr 30 Javascript
jQuery EasyUI API 中文文档 - EasyLoader 加载器
Sep 29 Javascript
整理Javascript基础入门学习笔记
Nov 29 Javascript
基于javascript实现简单计算器功能
Jan 03 Javascript
Jquery中map函数的用法
Jun 03 Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
Jun 13 Javascript
Vue cli构建及项目打包以及出现的问题解决
Aug 27 Javascript
vue-router 起步步骤详解
Mar 26 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
Jun 05 Javascript
koa中间件核心(koa-compose)源码解读分析
Jun 15 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
Oct 30 Javascript
Vue 电商后台管理项目阶段性总结(推荐)
Aug 22 #Javascript
vue实现移动端H5数字键盘组件使用详解
Aug 25 #Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
Aug 21 #Javascript
js实现页面导航层级指示效果
Aug 25 #Javascript
js实现拖拽元素选择和删除
Aug 25 #Javascript
基于vue实现简易打地鼠游戏
Aug 21 #Javascript
vue实现打地鼠小游戏
Aug 21 #Javascript
You might like
php array_slice函数的使用以及参数详解
2008/08/30 PHP
PHP访问数据库集群的方法小结
2016/03/14 PHP
页面版文本框智能提示JS代码
2009/11/20 Javascript
JSONP跨域的原理解析及其实现介绍
2014/03/22 Javascript
JavaScript学习笔记之JS函数
2015/01/22 Javascript
NodeJS学习笔记之Connect中间件应用实例
2015/01/27 NodeJs
js实现两点之间画线的方法
2015/05/12 Javascript
JQuery中Text方法用法实例分析
2015/05/18 Javascript
Yarn的安装与使用详细介绍
2016/10/25 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
laypage.js分页插件使用方法详解
2019/07/27 Javascript
node.js文件操作系统实例详解
2019/11/05 Javascript
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
2017/07/25 Python
python中返回矩阵的行列方法
2018/04/04 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
2018/11/10 Python
Python 存储字符串时节省空间的方法
2019/04/23 Python
python实现简单的五子棋游戏
2020/09/01 Python
Grow Gorgeous美国官网:只要八天,体验唤醒毛囊后新生的茂密秀发
2018/06/04 全球购物
Molly Bracken法国电子商店:法国女性时尚品牌
2019/07/24 全球购物
香港演唱会订票网站:StubHub香港
2019/10/10 全球购物
澳大利亚领先的亚麻品牌:Bed Threads
2019/12/16 全球购物
计算机专业毕业生求职信分享
2013/12/24 职场文书
澳大利亚商务邀请函
2014/01/17 职场文书
公务员培训自我鉴定
2014/02/01 职场文书
银行金融服务方案
2014/06/11 职场文书
医院搬迁方案
2014/06/14 职场文书
设计专业自荐信
2014/06/19 职场文书
纪检干部对照检查材料
2014/08/22 职场文书
2014年世界艾滋病日演讲稿
2014/11/28 职场文书
个人求职意向书
2015/05/11 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
志愿者服务宣传标语口号
2015/12/26 职场文书
创业计划书之美容店
2019/09/16 职场文书
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript