背景
在使用Vue時避免不了子組件要調用父組件中定義的方法,Vue官網給出了API說明,this.$parent
可以調用父組件自定義的方法。但是在使用UI組件時可能會出現無法使用this.$parent
直接調用父組件方法的問題。
原因
首先看一個示例:
<Tabs value="name1">
<TabPane label="輸入productID綁定" name="name1">
<TextTag @setText="setTagList"/>
</TabPane>
</Tabs>
上面代碼中使用了iview組件TabPane
, TextTag
是自己寫的組件,在TextTag
組件中直接使用this.$parent
調用它父級組件的方法會報錯,提示方法未定義。
報錯原因:自己寫的組件被包裹在iview的組件中,TextTag
直接父級組件是iview 中的TabPane
,所以直接在TextTag
組件中調用它父級方法是調用不到的。
解決方法
如果在這種情況下還想要調用父組件中的方法,可以使用:
this.$emit() //它能調用父組件的方法并傳遞數據
相關鏈接:Vue 中$emit 的用法