如何實現子元件向父元件傳值
自定義元件是一個開發者編寫的元件,使用起來和 Native 一樣,最終按照元件的<template> 來渲染;同時開發起來又和頁面一樣,擁有 ViewModel 實現對資料、事件、方法的管理。 自定義元件也叫子元件,因為它不能獨立存在,需要被引入到頁面上才能生效。子元件避免一個頁面的佈局龐大、臃腫,而且使程式碼可讀性好、易維護。
子元件如何向父元件傳值呢?比如當子元件對資料進行改造後,如何把最終資料交給父元件呢?主要有兩種方法:
-
子元件透過$emit() 觸發在節點上繫結的自定義事件來執行父元件的方法。
-
子元件透過$dispatch() 觸發自定義事件,父元件透過$on() 監控自定義事件的觸發。
解決方案
方法一
子元件透過$emit() 觸發在節點上繫結的自定義事件來執行父元件的方法,如下例子中實現瞭如何將子元件中的count 值傳遞到父元件上。子元件定義了emitEvt 事件(父元件中引用時,需要新增on 字首),子元件在呼叫$emit() 時,攜帶了count 引數,父元件在響應事件時,便可獲取到引數值。
<!-- 父元件 -->
<import name="comp1" src="./comp1.ux"></import> <template> <div style="flex-direction: column;"> <text>我是父元件count:{{fcount}}</text> <comp1 count="{{fcount}}" onemit-evt="emitEvt"></comp1> </div> </template> <script> export default { private:{ fcount:20 }, emitEvt(evt){ this.fcount = evt.detail.count } } </script>
<!-- 子元件comp1 -->
<template> <div class="child-demo"> <text>我是子元件一count:{{compCount}}</text> <input type="button" onclick='addHandler' value='add'></input> </div> </template> <script> export default { props: ['count'], data(){ return{ compCount:this.count } }, addHandler(){ this.compCount ++ this.$emit('emitEvt',{ count:this.compCount }) } } </script>
方法二
子元件呼叫childVm.$dispath() 完成向上傳遞。子元件透過$dispatch() 觸發自定義事件,父元件透過$on() 監控自定義事件的觸發,自定義事件中控制num 的變化,父元件中透過evt.detail 獲取子元件中的num 的值賦值給父元件。
<!-- 父元件 -->
<import name="comp1" src="./comp1.ux"></import> <template> <div style="flex-direction: column;"> <text>我是父元件fnum:{{fnum}}</text> <comp2 num="{{fnum}}"></comp2> </div> </template> <script> export default { private:{ fnum:20 }, onInit(){ this.$on('dispathEvt',this.dispathEvt) }, dispathEvt(evt){ this.fnum = evt.detail.num } } </script>
<!--
子元件comp2 -->
<template> <div class="child-demo"> <text>我是子元件二num:{{compNum}}</text> <input type="button" onclick='delHandler' value='del'></input> </div> </template> <script> export default { props: ['num'], data(){ return{ compNum:this.num } }, delHandler(){ this.compNum -- this.$dispatch('dispathEvt',{ num:this.compNum }) } } </script>
欲瞭解更多詳情,請參閱:
快應用開發指導文件 : https://developer.huawei.com/consumer/cn/doc/development/quickApp-Guides/quickapp-whitepaper
元件介紹: https://developer.huawei.com/consumer/cn/doc/development/quickApp-References/quickapp-template
原文連結: https://developer.huawei.com/consumer/cn/forum/topic/0204411993708700389?fid=18
原作者:Mayism
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69970551/viewspace-2768902/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 父元件向子元件傳值元件
- vue子元件向父元件傳值(實戰)Vue元件
- vue子元件向父元件傳遞值Vue元件
- vue子元件怎麼向父元件傳值Vue元件
- vue元件巢狀之 - 父元件向子元件傳值Vue元件巢狀
- vue 基礎入門筆記 13:父元件向子元件傳值、父元件向子元件傳遞方法Vue筆記元件
- 子元件向父元件傳參元件
- Vue子元件接收父元件傳值方式Vue元件
- 元件中 子給父傳值元件
- 2020/09/24 react中函式元件父元件動態向子元件傳值React函式元件
- 【VUE入門】父元件給子元件傳值Vue元件
- VUE 父元件動態傳值給子元件Vue元件
- 元件(子傳父)元件
- React 元件建立方法及父元件向子元件傳參(基礎)React元件
- vue 父元件props傳值子元件時 的更新問題Vue元件
- 子元件給父元件傳資料元件
- vue3 父元件【屬性】傳值給子元件【props】接收Vue元件
- 用簡單的程式碼描述Angular父元件、子元件傳值Angular元件
- vue 父元件在created中傳值給子元件,子元件去監聽props變化Vue元件
- Vue.js子元件向父元件通訊Vue.js元件
- vue 子元件為何不可以修改父元件傳遞的值?Vue元件
- 筆記1:vue 利用props 父到子元件傳值(初識元件)筆記Vue元件
- Vue--子元件互相傳值,子元件來回傳值,傳值反覆橫跳Vue元件
- Angular元件——父元件呼叫子元件方法Angular元件
- React 父元件如何主動“聯絡”子元件React元件
- 2018-04-04(Vue父元件獲取子元件的值)Vue元件
- 子元件給父親傳遞資料元件
- vue裡面父元件如何修改子元件樣式Vue元件
- Vue父子元件雙向繫結傳值的實現方法Vue元件
- Vue父子元件如何雙向繫結傳值Vue元件
- 父往子傳,子往父傳,以及平行傳值
- Vue : props 使用細節(父元件傳遞資料給子元件)Vue元件
- vue3 父元件給子元件傳遞泛型(不用JSX)Vue元件泛型JS
- Vue 子元件和父元件傳遞資料與方法的例子Vue元件
- 子元件獲取父元件的值,將這個值作為狀態值儲存元件
- 前端學習(2333):angular之元件傳值之子傳父前端Angular元件
- vue中子元件傳遞父元件$emitVue元件MIT
- Vue3中,使用TSX/JSX編寫的父元件,如何向子元件中傳遞具名插槽(slot)的內容VueJS元件