微信小程式父子元件之間的資料傳遞
1.父子元件之間通訊的 3 種方式
① 屬性繫結
用於父元件向子元件的指定屬性設定資料,僅能設定 JSON 相容的資料(只能傳遞資料,不能傳遞
方法)
② 事件繫結
用於子元件向父元件傳遞資料,可以傳遞任意資料(包括資料和方法)
③ 獲取元件例項
父元件還可以通過 this.selectComponent() 獲取子元件例項物件
這樣就可以直接訪問子元件的任意資料和方法
- 屬性繫結
屬性繫結用於實現父向子傳值,而且只能傳遞普通型別的資料,無法將方法傳遞給子元件。
父元件的示例程式碼如下:
data: {
// 父元件中的data節點
count: 0
}
// 父元件的wxml結構
<my-test3 count="{{count}}"></my-test3>
<view>------</view>
<view>父元件中,count值為 {{count}}</view>
子元件在 properties 節點中宣告對應的屬性並使用。
// 子元件的properties 節點
properties: {
count: Number
}
// 子元件的wxml結構
<text>子元件中, count值為:{{count}}</text>
3.事件繫結
事件繫結用於實現子向父傳值,可以傳遞任何型別的資料。使用步驟如下:
① 在子元件的 js 中,在特定的時機通過呼叫 this.triggerEvent (‘自定義事件名稱’, { /* 引數物件
*/ })產生一個自定義事件, 並且可以帶上事件引數物件.
② 在父元件的 wxml 中的子元件標籤中,使用 bind :自定義事件名稱="事件處理函式"監聽自定義事
件。
③ 在父元件的 js 中,定義一個函式,這個函式即將通過自定義事件的形式,傳遞給子元件
④ 在父元件的 事件處理函式中,通過 e.detail 獲取到子元件傳遞過來的資料。
步驟1:在子元件的 js 中,在特定的時機通過呼叫 this.triggerEvent 產生一個自定義事件
// 子元件中的 wxml結構
<text>子元件中,count值為: {{count}}</text>
<button bindtap="addCount">+1</button>
// 子元件中的js程式碼
methods: {
addCount() {
// this.setData這行程式碼寫的很多此一舉
// 因為只要父元件修改了它傳遞到子元件的資料, 子元件自然就隨之進行更新了
this.setData({
count: this.properties.count + 1
})
// 使用 this.triggerEvent去觸發父元件的自定義事件
// 並將數值同步給父元件
this.tiggerEvent('sync', {value: this.properties.count})
}
}
步驟2:在父元件的 wxml 中的子元件標籤中,使用 bind :自定義事件名稱=“事件處理函式”監聽
自定義事件
<my-test3 count="{{count}}" bind:sync="syncCount"></my-test3>
步驟3:在父元件的 js 中,定義一個函式,這個函式在自定義事件產生的時候, 會得到執行
// 在父元件的JS檔案中,定義一個事件
syncCount (e) {
console.log(e)
}
步驟4:在父元件的 js 中,通過 e.detail 獲取到子元件傳遞過來的資料。
// 父元件的js檔案
syncCount (e) {
this.setData({
// 父元件通過事件物件 e 獲取到子元件傳遞的值
count: e.detail.value
})
}
4.獲取元件例項
可在父元件裡呼叫 this.selectComponent(“id或class選擇器”) ,獲取子元件的例項物件,從而直
接訪問子元件的任意資料和方法。呼叫時需要傳入一個選擇器,例如 this.selectComponent(".my-
component")
<!--父元件的wxml檔案-->
<my-test class="cusstomA" id="cA" count="{{count}}" bind:sync="syncCount">
</my-test>
<button bindtap="getChild">獲取子元件例項</button>
//父元件的js檔案 按鈕的tap事件處理函式
getChild() {
// 切記下面的引數不能傳遞標籤選擇器,不然返回的是null
// 也可以傳遞ID選擇器
const child = this.selectComponent('.customA')
// 呼叫子元件的setData方法,修改count的值,
child.setData({ count: this.data.count + 1 })
child.addCount() // 直接呼叫子元件的addCount方法,該方法在child例項物件的__proto__上可以訪問到該方法
}
相關文章
- Vue學習小札——2.4 父子元件間的資料傳遞Vue元件
- 父子元件的資料傳遞元件
- 微信小程式資料傳遞總結微信小程式
- vue元件之間的資料傳遞Vue元件
- 父子元件資訊傳遞元件
- 微信小程式--頁面與元件之間如何進行資訊傳遞和函式呼叫微信小程式元件函式
- Vue父子之間的值傳遞Vue
- 微信開發之小程式頁面間如何傳遞引數
- Vue 父子元件資料傳遞( inheritAttrs + $attrs + $listeners)Vue元件
- 微信小程式中的值傳遞微信小程式
- 父子元件之間的傳值問題元件
- 微信小程式 關於父子元件一些心得微信小程式元件
- vue---元件間傳遞訊息(父子傳遞訊息,兄弟傳遞訊息)Vue元件
- Vue元件間傳遞資料Vue元件
- Vue元件間資料傳遞Vue元件
- 兄弟元件之間資訊傳遞元件
- vue---註冊元件、元件之間父子傳值Vue元件
- 非父子元件間的傳值元件
- vue父子元件之間傳值以及方法呼叫Vue元件
- 微信小程式之間的跳轉及如何傳參互動微信小程式
- 微信小程式的路由跳轉和傳遞引數微信小程式路由
- Vue元件之間的資料傳遞(通訊、互動)詳解Vue元件
- 頁面之間傳遞資料
- 微信小程式自定義元件封裝及元件傳值微信小程式元件封裝
- Ability之間或者程式間資料傳遞之物件(Sequenceable序列化)物件
- 微信小程式之倒數計時元件微信小程式元件
- 微信小程式元件button微信小程式元件
- vue2父子組建傳遞資料Vue
- todolist案例--父子元件協調進行資料傳遞、方法呼叫、列表渲染元件
- 不同順序InBoundHandler之間的資料傳遞
- 元件:非父子間傳值(同級傳值)元件
- HarmonyOS-基礎之元件資料傳遞元件
- Android開發 - Parcelable 介面實現不同元件之間傳遞資料解析Android元件
- 微信小程式元件封裝微信小程式元件封裝
- 微信小程式框架與元件微信小程式框架元件
- 微信小程式之物流狀態時間軸微信小程式
- 微信小程式簡單封裝圖片上傳元件微信小程式封裝元件
- 微信小程式——計算2點之間的距離微信小程式