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. javascript - 小米浏览器中,图片导致fixed定位的元素无法显示2. mysql主从,从库锁表会导致复制阻塞吗?3. 为什么HTML5规范中会包含一些和html无关的东西?如本地存储等。4. javascript - 为什么!function foo(){}返回false,!function foo(){}()返回true?5. java - yuicompressor-maven-plugin 合并可用却不压缩, 哪配置不对?6. update方法不能更新字段值为0的数据7. word-wrap该如何使用?8. html - 特殊样式按钮 点击按下去要有凹下和弹起的效果9. javascript - ES5的闭包用ES6怎么实现10. mysql - 我用SQL语句 更新 行的时候,发现全部 中文都被清空了,请问怎么解决?
