<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>