小程序事件/自定义组件

事件

常见事件:

test.wxml     

<!-- 事件-->
<button bind:tap="click" data-name="{{b}}" data-age="sb">按钮</button>   #bind:事件名="事件函数名"
<view class="outer" bind:tap="click1" data-name="1">
外面
<view class="inner" bindtap="click2" data-name="2">    
里面
</view>
</view>

test.js   (在js最下方写)

 click1: function () {

    console.log("外面的")
  },
   click2: function () {
 
    console.log("中间的")
  }

事件传递参数:(重点******)

当视图层发生事件时,某些情况需要事件携带一些参数到执行的函数中,这个时候可以通过 data-属性 来完成

1.格式:data-属性的名称

2.获取:e.currentTarget.dataset.属性的名称       (除了currentTarget还有Target)

自定义组件

1.创建自定义组件

类似于页面,一个自定义组件由 json 、wxml 、wxss 、js 4个文件组成

声明组件

首先需要在 json 文件中进行自定义组件声明

{
  "component": true,
}

注册组件

在自定义组件的js文件中,需要使用component()来注册组件,并提供组件的属性定义、内部数据和自定义方法

Component({
  /**
   * 组件的属性列表
   */
  properties: {
    name: {
      type: String,
      value: "你好"
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    title:"ssss"
  },

  /**
   * 组件的方法列表
   */
  methods: {
    click:function(e){
      this.triggerEvent("icre", { "index": 323 }, {})  #注意一定要写这个,icre相当于触发事件,可以通过icre知道使用自定义组件,后面的index是传的值
    }
  }
})

自定义组件一般都创建commpents,然后再右击这个目录选择创建commpent,重命名

2.使用自定义组件

首先要在需要使用的json文件中进行引用声明

比如在test下使用,那么在test.json中先写

 

 3.组件将事件传给页面

组件的wxml  (设置一个按钮,绑定一个事件click,点击按钮就加1)

<button bind:tap="click"  data-ss="123">按钮</button>

组件的js    (在methods中写事件函数)

methods: {
    click:function(e){
      console.log(e)
      this.triggerEvent("icre", { "index": 323 }, {})  #这里的icre相当于是给使用标记的页面做个标记,后面跟的是参数index
    }

  }

页面    

<view></view>
{{num}}
<tes name="是的" bind:icre="click"></tes>  #通过icre和自定义组件绑定

页面js

click:function(e){    #click事件函数,自定义组件的按钮点击一次数字就加1
    console.log(e)    
      this.setData({
        num:this.data.num+1
      })
  }

自定义组件中传递的index参数,在页面js中console.log(e)中detail

posted @ 2019-11-05 18:27  只会玩辅助  阅读(2290)  评论(0编辑  收藏  举报