【笔记】微信小程序获取view的currentTarget.dataset 为undefined

1,356 阅读2分钟

「这是我参与2022首次更文挑战的第9天,活动详情查看:2022首次更文挑战

前言

  嗨,大家好,还有几天就要过年了,越到年底是越忙碌的时刻,昨天已经版本迭代发版到凌晨,回家眯了会,下午继续奔赴公司支持。晚上回顾了一下小程序的历程,把遇到的问题就顺手记录一下。

问题

描述

  问题是这样的。由于当时自建小程序,第一次接触到小程序的前端开发,然后需要从微信小程序页面标签view获取指定的值,但是从其中获取到的微信小程序获取view的currentTarget.dataset 为undefined。于是开启了打怪升级模式。

代码优化前

  第一次写的时候原码是这样的

<view class="item bc_yellow" bindtap="toTestPage" data-testId="{{item.examId}}" data-examName="{{item.examName}}">
    {{item.examName}}
</view>

JS获取前端页面中的值得方法

 toTestPagefunction(e){
    let testId = e.currentTarget.dataset['testid'];
    console.log('--------'+e.currentTarget.dataset['examName'])
    wx.navigateTo({
      url'../test/test?testId='+testId
    })
  }

  由于前端页面是遍历数组之后,用户点击相应的按钮后,将点击按钮的id传递给后台服务器。在调试控制台打印日志之后,输出undefined。百思不得其解,于是开始改造。

代码优化后

改造之后

<view class="flex-item">         
    <view class="item bc_yellow" bindtap="toTestPage" data-testid="{{item.examId}}" data-examname="{{item.examName}}">{{item.examName}}</view>       
</view>

js

toTestPagefunction(e){
    let testId = e.currentTarget.dataset['testid'];
    console.log('--------'+e.currentTarget.dataset['examname'])
    wx.navigateTo({
      url'../test/test?testId='+testId
    })
  }

  再次调用之后就能正常获取到参数了,访问接口之后返回数据正常。

分析

  在微信小程序的原生在组件中当我们定义数据的时候,需要将定义的数据通过事件传递给服务器中,一般应该以data-数据变量名。如果存在多个单词组成一个变量名称时,可以使用“-”进行拼接。如果存在打写的字母,在编译执行的过程中会转成大写转成小写。

  • 错误格式:data-Element-Type
  • 正确格式:data-element-type, 最终在 event.target.dataset 中会将连字符转成驼峰elementType。

结语

  好了,以上就是微信小程序获取view的currentTarget.dataset 为undefined解决方法,感谢您的阅读,希望您喜欢,如对您有帮助,欢迎点赞收藏。如有不足之处,欢迎评论指正。下次见。

  作者介绍:【小阿杰】一个爱鼓捣的程序猿,JAVA开发者和爱好者。公众号【Java全栈架构师】欢迎关注阅读交流。