文章目录
- 前言
- 一、id和data-xxx传参
- 二、导航传值
- 三、父子组件传值
前言
组件传参是小程序中非常重要的一个功能,因为小程序大多都是组件形式存在的。
一、id和data-xxx传参
代码语言:javascript复制view class="container">
<view class="usermotto">
<!-- 传入普通字符串数值 -->
<button class="user-motto" bindtap="onGetIdValue" id="winne" data-name="name">小程序通过id传值</button>
</view>
</view>
代码语言:javascript复制Page({
//事件处理函数
onGetIdValue (e) {
// currentTarget:事件绑定的当前组件
console.log(e.currentTarget.id)
console.log(e.currentTarget.dataset.name)
}
})
二、导航传值
代码语言:javascript复制onJumpToLogisticsDetail(e) {
// target:触发事件的源组件
let orderid = 110110110
let num = 120120120
wx.navigateTo({
url: `/pages/logisticsDetail/logisticsDetail?orderId=${orderid}&num=${num}`
})
}
}
代码语言:javascript复制//logisticsDetail.js
onLoad: function (options) {
console.log(options)
}
三、父子组件传值
- ⽗组件 把数据 {{tabs}} 传递到 ⼦组件的 tabItems 属性中
- ⽗组件 监听 onMyTab 事件
- ⼦组件 触发 bindmytap 中的 mytap 事件
- ⾃定义组件触发事件时,需要使⽤ triggerEvent ⽅法,指定 事件名 、 detail 对象
- ⽗ -> ⼦ 动态传值 this.selectComponent(“#tabs”);
// page.wxml
<tabs tabItems="{{tabs}}" bindmytap="onMyTab" >
内容-这里可以放插槽
</tabs>
// page.js
data: {
tabs:[
{name:"体验问题"},
{name:"商品、商家投诉"}
]
},
onMyTab(e){
console.log(e.detail);
},
代码语言:javascript复制// com.wxml
<view class="tabs">
<view class="tab_title" >
<block wx:for="{{tabItems}}" wx:key="{{item}}">
<view bindtap="handleItemActive" data-index="{{index}}">{{item.name}}</view>
</block>
</view>
<view class="tab_content">
<slot></slot>
</view>
</view>
// com.js
Component({
properties: {
tabItems:{
type:Array,
value:[]
}
},
/**
* 组件的初始数据
*/
data: {
},
/**
* 组件的方法列表
*/
methods: {
handleItemActive(e){
this.triggerEvent('mytap','haha');
}
}
})