目錄
1. 自定義組件
小程序允許我們使用自定義組件的方式來構建頁面。
官方文檔
是不是用的微信的組件感覺很爽啊,如果不夠用怎么辦?
1.1 創建自定義組件
類似於頁面,一個自定義組件由
json
wxml
wxss
js
4個文件組成
1.1.1 聲明組件
首先需要在 json
文件中進行自定義組件聲明
{
"component": true
}
1.1.2 編輯組件
同時,還要在 wxml
文件中編寫組件模板,在 wxss
文件中加入組件樣式
注意:在組件wxss中不應使用ID選擇器、屬性選擇器和標簽名選擇器。
<!--componentes/com/com.wxml-->
<view>我是組件</view>
<button>按鈕組件{{num}}</button>
1.2 使用自定義組件
首先要在頁面的 json
文件中進行引用聲明。還要提供對應的組件名和組件路徑
注冊-->使用
# json文件中注冊
{
// 引用聲明
"usingComponents": {
// 要使用的組件的名稱 // 組件的路徑
"com": "/componentes/com/com"
}
}
# wxml文件中使用
<!--pages/test1/test1.wxml-->
<com></com>
1.3 頁面向自定義組件傳遞數據(父傳子)
注意點:
1.properties中:是寫其他頁面傳過來的變量
2.data中:本頁面的變量,屬性
# 組件wxml文件
<!--componentes/com/com.wxml-->
<!-- name值是由頁面決定的 -->
<view>{{name}}大帥逼</view>
# 組件js文件
// componentes/com/com.js
Component({
/**
* 組件的屬性列表
*/
properties: {
name:{
type: String, //屬性的類型
value: 'jeff' // 屬性的默認值,如果頁面沒有給這個name賦值,就使用這個value的值
}
},
/**
* 組件的初始數據
*/
data: {
},
#頁面中wxml
<my-con title="{{變量名}}"><my-con/>
#再組件中
properties: {
title:{
type:String,
value:"你好"
}
}
# 頁面wsml文件
<com name='chary'></com> //可以是固定值
<com name = "{{name1}}"></com> //這里的可以是變量
1.4 組件將事件傳給頁面(子傳父)
組件的方法methods里面
# 組件wxml文件
<button bind:tap="click">加一</button>
# 組件js文件
methods: {
click:function(e){
this.triggerEvent("jia1") // 傳遞jia1事件,不帶參數的
# this.triggerEvent("jia1",{num:e.currentTarget.dataset.num}) //帶參數的
}
}
# 頁面wxml文件 捕獲事件
<view>{{num}}</view>
<com bind:jia1="jia"></com>
# 頁面js文件
// pages/test1/test1.js
Page({
data: {
num:0
},
jia:function(e){
this.setData({
num: this.data.num + 1
})
}
})