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