您的位置:首页 > 移动开发 > 微信开发

微信小程序子组件向父组件传值的两个方法

2020-03-29 12:35 369 查看

第一种方法triggerEvent() 方法

triggerEvent方法用法类似于Vue中的emit()

// list.wxml 组件
<view>
<block wx:for="{{data}}" wx:key="*this">
<view class="box-list">
<view class="title">{{item.title}}</view>
<view class="content">
<view>{{item.content}}</view>
<view class="btn">
<button type="primary" size="mini" bindtap="handleTap" data-index="{{index}}">传值</button>
</view>
</view>
</view>
</block>
</view>
// list 组件 js
Component({
// 从父组件接收的data 会自动同步到 子组件的data 对象里面
properties: {
data: {
type: Array,
value: []
}
},
methods: {
handleTap(e) {
let { index } = e.currentTarget.dataset;
let data = this.data.data;
// 自定义一个事件,并且传值
this.triggerEvent('myevent',{params: data[index]},{})
},
}
})

home.wxml 父组件

<view>
<list bindmyevent="myevent" data="{{list}}" class="list"></list>
</view>
Page({
data: {
list:[{
title: '薛之谦',
content: '《演员》《你还要我怎样》'
},{
title: '第二梦',
content: '《风云1》《风云2》'
}]
},
myevent(e) {
// 这里就是子组件传过来的内容了
console.log(e.detail.params)
}
})

第二种方法

页面布局和上面是一样的
.list 是子组件的class 名

// home.js 父组件的js
Page({
onShow() {
const instance = this.selectComponent('.list');
// 打印出来的就是list 组件的实例了,这样就可以获取到子组件所有的数据了!
// 注意!这里也可以调用setData 等方法直接修改组件的值
console.log(instance)
}
})
  • 点赞
  • 收藏
  • 分享
  • 文章举报
九亿少女无法触及的梦ى 发布了15 篇原创文章 · 获赞 3 · 访问量 477 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: