Vue.js 来自子组件的事件为';检测不到
基于Vue上的树视图示例(),我将其代码重新组织如下: 在父组件中Vue.js 来自子组件的事件为';检测不到,vue.js,vuejs2,vue-component,Vue.js,Vuejs2,Vue Component,基于Vue上的树视图示例(),我将其代码重新组织如下: 在父组件中 <ul> <item class="item" :model="treeData" v-on:changeType="changeTypeEvent"></item> </ul> ... <script> ... methods: { changeTypeEvent: function () { console.log
<ul>
<item class="item" :model="treeData" v-on:changeType="changeTypeEvent"></item>
</ul>
...
<script>
...
methods: {
changeTypeEvent: function () {
console.log('Incoming event ' )
}
...
</script>
...
...
方法:{
changeTypeEvent:函数(){
console.log('传入事件')
}
...
在其子组件中
<li>
<div :class="{bold: isFolder}" @click="toggle" @dblclick.once="changeType">
{{model.name}}
<span v-if="isFolder">[{{open ? '-' : '+'}}]</span>
</div>
<ul v-show="open" v-if="isFolder">
<item class="item" v-for="model in model.children" v-bind:key="model.name" :model="model">
</item>
<li class="add" @click="addChild">+</li>
</ul>
</li>
...
<script>
export default {
name: 'item',
props: {
model: Object
},
data: function () {
return {
open: false
}
},
computed: {
isFolder: function () {
return this.model.children &&
this.model.children.length
}
},
methods: {
toggle: function () {
if (this.isFolder) {
this.open = !this.open
}
},
changeType: function () {
if (!this.isFolder) {
console.log('Double click ' + this.model.name)
this.$emit('changeType')
}
},
}
}
</script>
{{model.name}
[{{打开?'-':'+'}}]
- +
...
导出默认值{
名称:'项目',
道具:{
模型:对象
},
数据:函数(){
返回{
开放:假
}
},
计算:{
isFolder:函数(){
返回此.model.children&&
这个。模型。儿童。长度
}
},
方法:{
切换:函数(){
if(此.isFolder){
this.open=!this.open
}
},
changeType:函数(){
如果(!this.isFolder){
console.log('双击'+this.model.name)
此.$emit('changeType')
}
},
}
}
由于某些原因,在父组件中未检测到该事件。我有一个具有相同结构的工作代码。为什么在这种情况下不工作?Html属性名称不区分大小写()因此,Vue将父级上的事件侦听器从pascal case
changeType
转换为模板的kebab casechange type
:
<ul>
<item class="item" :model="treeData" v-on:change-type="changeTypeEvent"></item>
</ul>
Vue文档:请共享子组件的代码:)您是否尝试为您的事件使用其他名称?@Franzskufka我没有更改子组件代码,只是将v-on:changeType切换为v-on:changeType谢谢您提供的信息。我尝试在不使用任何大写字母的情况下重命名事件。问题仍然存在。我有一个看看我的另一个模式实现。事件名称包含一个大写字母。在父级中,它不在烤肉串中。这是有效的。我将用更多详细信息更新我的问题。请提供更多代码。请注意,您只能侦听来自直接子组件的事件。孙子不能触发事件。