vue递归后的组件点击事件不起作用

为什么递归后@click="selItem(item)"事件就无效了

<template>
  <span class="menu">
    <ul v-if="data && data.length">
      <li v-for="item in data" :key="item.id" @mouseenter="handleItem(item)">
        {{ item.label }}
        <span>
          <i class="el-icon-plus" @click="selItem(item)">+</i>
        </span>
      </li>
    </ul>
    <list v-if="sublist && sublist.length" :data="sublist">
    </list>
  </span>
</template>

<script>
import item from './item'
export default {
  name: 'list',
  props: {
    data: Array
  },
  components: {
    item
  },
  data () {
    return {
      sublist: []
    }
  },
  watch: {
    data () {
      this.sublist = []
    }
  },
  methods: {
    handleItem (item) {
      this.sublist = item.children
    },
    selItem (item) {
      this.$emit('select-item', item)
    },
    subItem (item) {
      console.log(item)
      this.$emit('select-item', item)
    }
  }
}
</script>

<style lang="less" scope>
.menu {
  width: 100%;
  ul {
    display: inline-block;
    min-width: 100px;
    height: 180px;
    margin: 0;
    padding: 5px 0!important;
    vertical-align: top;
    list-style: none;
    border-right: 1px solid #e9eaec;
    overflow: auto;
    height: 200px;
    overflow: auto;
    width: 33%;
    li {
      list-style: none;
      font-size: 12px;
      padding: 5px 15px;
      cursor: pointer;
      i {
        float: right;
        cursor: pointer;
      }
    }
  }
}
</style>
阅读 5.1k
3 个回答

selItem (item) {

  this.$emit('select-item', item)
},

后,父组件要监听"select_item 事件。
新手上路,请多包涵

你好,问题解决了嘛

新手上路,请多包涵

递归的<list>上也加上`
this.$emit('select-item', item)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题