微信小程序子組件向父組件傳值的兩個方法


第一種方法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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM