08335 / hivui-platform-template
hivui平台项目模板
Newer
Older
hivui-platform-template / project / hivuiMain / components / contextMenu / ContextMenuItem.vue
caibinghong on 4 Jun 2021 add
<template>
    <li @click="handleClick(item, $event)" :class="itemClass" :title="item[field]">
        <div class="label">
            <i class="iconfont" :class="item.iconClass" v-if="item.iconClass"></i>
            <span class="item-label" v-html="item.html||item[field]"></span>
            <span class="children-indicator iconfont icon-arrow-right trigger" v-if="item.children"></span>
        </div>
        <ul class="context-menu" v-if="item.children">
            <context-menu-item
                    v-for="(childItem, index) in item.children"
                    :item="childItem"
                    :field="field"
                    :key="index">
            </context-menu-item>
        </ul>
    </li>
</template>

<script>
export default {
  name: 'context-menu-item',
  props: {
    item: {
      type: Object,
    },
    field:{
      type:String,
      default:'title'
    }
  },
  inject:['getActiveKey','setActiveKey'],
  computed:{
    itemClass() {
      let item =this.item;
      return {
        // 'item-active':(item.id!=null)&&this.activeKey==item.id,
        'item-active':item.actived,
        'item-disabled': this.isItemDisabled(item)
      };
    },
    activeKey(){
      return this.getActiveKey();
    }
  },
  methods: {
    handleClick(item, event) {

      // !item.children&&this.setActiveKey(item.id);
      if (typeof item.handler !== 'undefined') {
      
        if (!this.isItemDisabled(item)) {
          item.handler(event);
        } else {
          
          event.stopPropagation();
        }

      }else{

      }

    },

    

    isItemDisabled(item) {
      if (typeof item.disabled !== 'undefined') {
        return item.disabled;
      }

      return false;
    },
  },
};
</script>