javascript - 子組件觸發父組件的自定義事件 父組件無任何反應
問題描述
以下為子組件 @change=’showChange’為子組件事件以下模板注冊為 order-type組件
<template><select name='dType' v-el:select @change=’showChange’> <option value='' v-if='type==’selectAll’'>全部</option> <option v-for='branch in branchList' :value='branch.id' track-by='$index'>{{branch.name}} </option> </select></template>
以下為子組件方法:
showChange(event) { for (let branch of this.branchList) {if (branch[’id’] === event.target.value) { this.$emit(’showChange’,branch[’prefix’]);} }
以下是父組件
<order-type @showChange=’alert(2)’></order-type>
但alert(2) 并未執行
問題解答
回答1:你直接這么寫有問題的吧應該是
<order-type @showChange=’alertFun’></order-type> 父組件有一個方法methods: { alertFun () {alert(2) }}
這里應該傳遞的是父組件方法的一個函數名,而不是直接寫alert(2)
回答2:應該是這塊出問題了<option v-for='branch in branchList' :value='branch.id' track-by='$index'>for in對象循環取得的是索引,不是值,所以取不到branch.id,可以改成for of
回答3:以下為子組件 @change=’showChange’為子組件事件以下模板注冊為 order-type組件
<template><select name='dType' v-el:select @change:parentChage=’showChange’>
<option value='' v-if='type==’selectAll’'>全部</option> <option v-for='branch in branchList' :value='branch.id' track-by='$index'> {{branch.name}} </option>
</select></template>
以下為子組件方法:
showChange(event) {for (let branch of this.branchList) { if (branch[’id’] === event.target.value) { /注意此行的修改/ this.$emit(’parentChage’,branch[’prefix’]); }}以下是父組件<order-type @showChange=’alert(2)’></order-type> 但alert(2) 并未執行
相關文章:
1. mysql - 數據庫建字段,默認值空和empty string有什么區別 1102. 新人求教MySQL關于判斷后拼接條件進行查詢的sql語句3. 在mybatis使用mysql的ON DUPLICATE KEY UPDATE語法實現存在即更新應該使用哪個標簽?4. mysql - 這種分級一對多,且分級不平衡的模型該怎么設計表?5. Navicat for mysql 中以json格式儲存的數據存在大量反斜杠,如何去除?6. mysql - 數據庫表中,兩個表互為外鍵參考如何解決7. php - 公眾號文章底部的小程序二維碼如何統計?8. mysql - 表名稱前綴到底有啥用?9. mysql - 千萬數據 分頁,當偏移量 原來越大時,怎么優化速度10. mac OSX10.12.4 (16E195)下Mysql 5.7.18找不到配置文件my.cnf
