最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

微信小程序中data-key屬性之數(shù)據(jù)傳輸(經(jīng)驗總結(jié))

 更新時間:2020年08月22日 11:19:34   作者:行舟客  
這篇文章主要介紹了微信小程序中data-key屬性:數(shù)據(jù)傳輸,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

本文是總結(jié)的一點經(jīng)驗之談

啥是data-key

微信小程序推出 data- 屬性——自定義屬性,為了更好的進行數(shù)據(jù)傳遞。
總結(jié)來說,data-key="{{...}}" 是獲取頁面中需要用的數(shù)據(jù),往js文件(事件)中傳—— 被綁定在其組件上的事件使用 也就是常說的:dataset;(比如:wx:for的view中的每一個項的name屬性值)
data-key="..." 是從data傳到wxml頁面中,一般都是在data中存在的屬性才這樣做,它就是為了“動態(tài)修改”data中的屬性。

  • 只有data-*傳的值才能在事件中被dataset接收,其余的“{{}}”只能使用
  • detaildata-*中不帶{{}}時一般都是寫好的值,只是用作:不必用data中的數(shù)據(jù)!

怎么接收data-*的值

如下:

<view bindtap="SetData" data-name="mxc" data-age="18">
 獲取數(shù)據(jù)
</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中

在這里插入圖片描述

我們看到,如愿以償。

那能不能再currentTarget中輸出?

準確的說,是:能不能獲取currentTarget中的值?
那肯定可以啦!

我們來看官方文檔:

在這里插入圖片描述

從中可以看出一個很嚴重的問題:當前組件觸發(fā)事件組件
我們都知道,觸發(fā)事件有 bindtapcatchtap 兩種。其中,bindtap可向上(父組件)傳遞事件
明白了吧?
一般來說, 要想更精確,就用currentTarget;要在一個大組件中有多個觸發(fā)事件,就可以用target減少事件定義

說說data-綁定數(shù)據(jù)的坑

你如果在wxml中這么寫

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

然后在js中接收:

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

是會出大問題的:它報undefined!

在組件中可以定義數(shù)據(jù),這些數(shù)據(jù)將會通過事件傳遞給 SERVICE。 書寫方式: 以data-開頭,多個單詞由連字符-鏈接,不能有大寫(大寫會自動轉(zhuǎn)成小寫)如data-element-type,最終在 event.currentTarget.dataset 中會將連字符轉(zhuǎn)成駝峰elementType。

也就是說小程序自動轉(zhuǎn)了,會把下劃線轉(zhuǎn)為大寫,大寫轉(zhuǎn)為小寫。。。(不知道坑了多少人)

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

改過之后,世界一片清凈…

總結(jié)

相關(guān)文章

最新評論

贵州省| 无锡市| 黎平县| 阜阳市| 屯门区| 泰州市| 宜兰市| 天镇县| 洞头县| 南安市| 贵港市| 宁强县| 昆山市| 怀远县| 常德市| 峡江县| 澄迈县| 邵阳市| 泉州市| 定襄县| 连南| 衡水市| 永城市| 长治市| 永平县| 蕉岭县| 濮阳县| 安达市| 高清| 兴安盟| 吉木乃县| 虹口区| 河池市| 微山县| 宜兰市| 宁乡县| 车致| 启东市| 天峻县| 清丰县| 竹北市|