微信小程序开发系列(十七)·事件传参·mark-自定义数据

2024-03-11 6703阅读

微信小程序开发系列(十七)·事件传参·mark-自定义数据 第1张

步骤一:按钮的创建

步骤二:按钮属性配置

步骤三:添加点击事件

步骤四:参数传递

步骤五:打印数据

步骤六:获取数据

步骤七:父进程验证

总结:data-*自定义数据和mark-自定义数据的区别


        事件传参:在触发事件时,将一些数据作为参数传递给事件处理函数的过程,就是事件传参。

        在微信小程序中,我们经常会在组件上添加一些自定义数据,然后在事件处理函数中获取这些自定义数据,从而完成业务逻辑的开发。

        上一章我们了解到,在组件上通过data-"的方式定义需要传递的数据,其中*是自定义的属性,例如: 然后通过事件对象进行获取自定义数据。

零基础手把手教你创建微信小程序(十六)·事件传参·data-*自定义数据-CSDN博客

        本章我们讲解另一种方法,小程序进行事件传参的时候,除了使用 data-* 属性传递参数外,还可以使用 mark 标记传递参数mark是一种自定义属性,可以在组件上添加,用于来识别具体触发事件的target节点。

        同时mark还可以用于承载一些自定义数据在组件上使用 mark:自定义属性 的方式将数据传递给事件处理函数。

        例如: 然后通过事件对象进行获取自定义数据

步骤一:按钮的创建

        找到购物车页面,找到其文件路径,快速找到cart.wxml文件,编写代码,创建一个按钮:


  按钮

微信小程序开发系列(十七)·事件传参·mark-自定义数据 第2张

步骤二:按钮属性配置

        找打上一配置的cate.scss文件将其中的内容复制粘贴到cart.scss文件中,配置按钮相关属性:

view{
  display: flex;
  height: 300rpx;
  background-color: skyblue;
  align-items: center;
}

微信小程序开发系列(十七)·事件传参·mark-自定义数据 第3张

步骤三:添加点击事件

        在cart.wxml文件中创建一个名为“bluHandler”的点击事件:


  按钮

微信小程序开发系列(十七)·事件传参·mark-自定义数据 第4张

步骤四:参数传递

        如果需要使用 mark 进行事件传参,如果需要使用 mark:自定义属性的方式进行参数传递:


  
  按钮

微信小程序开发系列(十七)·事件传参·mark-自定义数据 第5张

步骤五:打印数据

        找到cart.js文件,对按钮绑定事件进行处理:

Page({
  
  // 按钮绑定的事件处理函数
  btuHandler(event){
    console.log(event)
  }
})

微信小程序开发系列(十七)·事件传参·mark-自定义数据 第6张

微信小程序开发系列(十七)·事件传参·mark-自定义数据 第7张

步骤六:获取数据

Page({
  // 按钮绑定的事件处理函数
  btuHandler(event){
    console.log(event.mark.id)
    console.log(event.mark.name)
  }
})

微信小程序开发系列(十七)·事件传参·mark-自定义数据 第8张

步骤七:父进程验证

        找到cart.wxml对view添加事件:


  
  
  按钮

微信小程序开发系列(十七)·事件传参·mark-自定义数据 第9张

        在找到cart.js文件,对view创建的事件,读取:

        首先点击蓝色区域(不点击按钮):

Page({
  // 按钮绑定的事件处理函数
  btuHandler(event){
    console.log(event.mark.id)
    console.log(event.mark.name)
  },
  //view 绑定的事件处理函数
  parentHandler(event){
    //先点击蓝色区域
    // 通过事件对象获取的是 view 身上绑定的数据
    console.log(event)
  }
})

微信小程序开发系列(十七)·事件传参·mark-自定义数据 第10张

        点击按钮(不点击蓝色区域):

Page({
  // 按钮绑定的事件处理函数
  btuHandler(event){
    console.log(event.mark.id)
    console.log(event.mark.name)
  },
  //view 绑定的事件处理函数
  parentHandler(event){
    //先点击蓝色区域
    // 通过事件对象获取的是 view 身上绑定的数据
    // 先点击按钮(不点击蓝色区域)
    console.log(event)
  }
})

微信小程序开发系列(十七)·事件传参·mark-自定义数据 第11张

总结:data-*自定义数据和mark-自定义数据的区别

对于 data-*自定义数据:

点击蓝色区域(不点击按钮)

        currentTarget 事件绑定者:view

        target 事件触发者:view

不点击蓝色区域(点击按钮)     

        currentTarget 事件绑定者:view

        target 事件触发者:按钮

如果想获取 view 身上的数据,就必须使用 currentTarget 才可以。

如果想获取的是时间触发者本身数据,就需要使用 target。

对于 mark-自定义数据:

点击蓝色区域(不点击按钮)

        通过事件对象获取的是 view 身上绑定的数据

不点击蓝色区域(点击按钮)

通过事件对象获取到的是 触发事件的节点 以及父节点身上的所有 mark 数据

微信小程序开发系列(十七)·事件传参·mark-自定义数据 第12张

微信小程序开发_时光の尘的博客-CSDN博客

微信小程序开发系列(十七)·事件传参·mark-自定义数据 第13张


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]