微信小程序 - 组件 | 自定义组件 | 组件事件传递页面

 

组件

小程序允许我们使用自定义组件的方式来构建页面 类似Vue的小组件

自定义组件

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

1.创建

1.创建components文件夹

2.在components文件下创建comp1文件夹

3.comp1 文件夹下创建Component文件

2.声明组件

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

{
    "component": true,  // 会自动生成
}

 

3.辑组件

与其他页面一样 在 wxml 文件中编写组件模板,在 wxss 文件中加入组件样式

注意:在组件wxss中不应使用ID选择器、属性选择器和标签名选择器。

comp.wxml
<!-- 这是自定义组件的内部WXML结构 -->
<text>{{innerText}}</text>

 

4.注册组件

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

comp.js
Component({
  properties: {
    // 这里定义了innerText属性,属性值可以在组件使用时指定
    innerText: {
      type: String,
      value: 'default value',
    }
  },
  data: {
    // 这里是一些组件内部数据
    someData: {}
  },
  methods: {
    // 这里是一个自定义方法
    customMethod: function(){}
  }
})

// compinent 类似页面js文件中的的 page
// properties 类似页面的js文件中的 data

 

使用自定义组件

1.引入组件

在页面的 json 文件中进行引用声明。还要提供对应的组件名和组件路径

test.json
{
  "usingComponents": {
    "comp": "/components/comp/comp"  // 组件路径
  },
  "navigationBarTitleText": "自定义组件"  // 组件页面台头名
}

 

2.页面使用组件

test.wxml
<comp innerText='重新赋值'></comp>  
<!--主页引用组件时,可以重新给组件中的变量重新赋值-->

 

组件将事件传给页面

组件中:

comp.wxml
<button bind:tap="click"  data-ss="123">按钮</button>  // 按钮会渲染到页面

 

comp.js

组件的事件要在组件的js文件中的methods方法属性中实现

methods: {
    click: function (e) {
      // console.log(e)
      this.triggerEvent("icre", { "index": 323 }, {})
    }
  }
// triggerEvent 关键字用于将事件传递给页面
// icer (可自定义) 页面通过 bind:icre 获取组件事件
// { "index": 323 } 为组件事件携带的数据

 

页面中:

test.wxml
<comp bind:icre="click"></comp>

 

test.js
Page({
   data{
    num:0, 
},
// 页面实现 icer 事件
click: function (e) {
    console.log(e)
    this.setData({
      num: this.data.num + 1
    })
    // this.data.num = this.data.num+1
  },

})

 

 

 

posted @ 2019-11-04 21:52  waller  阅读(5445)  评论(0编辑  收藏  举报