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

第一种方法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)
	}
})


转:https://blog.csdn.net/qq_39557024/article/details/104844351

posted @   炽橙子  阅读(7783)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示