账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    把elementUI的menu组件的submenu进行组件化然后放回el-menu组件里,为何功能异常?
    61
    0
    <template>
      <el-submenu index="1">
        <template  v-for="(value,key) in items">
          <template v-if="value.parent" slot="title"><i class="el-icon-message"></i>{{value.name}}</template>
          <el-menu-item v-else index="value.id">{{value.name}}</el-menu-item>
        </template>
      </el-submenu>
    </template>
    
    <script>
    export default {
      data() {
        const item = [{
          id: '1',
          name: '选项1',
          parent:true
        },{
          id: '1-1',
          name: '选项1-1',
          parent:false
        },{
          id: '1-2',
          name: '选项1-2',
          parent:false
        },{
          id: '1-3',
          name: '选项1-3',
          parent:false
        },{
          id: '1-4',
          name: '选项1-4',
          parent:false
        }
      ];
        return {
            items:item
        }
      }
    }
    </script>
    
    <style>
    
    </style>
    

    这是把代码写到了detailItem里,
    然后这是使用

    <template>
    <el-container style="height: 500px; border: 1px solid #eee">
      <el-aside width="200px" style="background-color: rgb(238, 241, 246)">
        <el-menu :default-openeds="['1']">
          <detailItem></detailItem>
        </el-menu>
      </el-aside>
    </el-container>
    </template>
    <style>
      .el-header {
        background-color: #B3C0D1;
        color: #333;
        line-height: 60px;
      }
    
      .el-aside {
        color: #333;
      }
    </style>
    
    <script>
    import detailItem from './detailItem'
      export default {
        name:'eleTest',
        data() {
    
          return {
            
          }
        },
        components:{
          detailItem
        }
      };
    </script>
    

    发现单击列表单个变色失去作用了,
    是否是因为el-menu是一个整体的组件的原因

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 淚已干丶心已碎 普通会员 1楼

      在 Element UI 中,如果你想把 submenu 组件化并放回 el-menu 组件中,你可能需要使用 v-ifv-for 的语法来实现。

      例如,你可以创建一个新的方法,该方法接收 menusubmenu 作为参数,然后根据需要更改 menu 中的子项状态。然后,你可以在 el-menu 中使用 v-if 来控制是否显示子项。

      js Vue.component('my-component', { data() { return { menu: { items: [ { text: 'Item 1' }, { text: 'Item 2' }, { text: 'Item 3' } ], submenu: [ { text: 'Submenu 1' }, { text: 'Submenu 2' }, { text: 'Submenu 3' } ] } }; }, methods: { updateSubmenuStatus(submenu) { this.menu.submenu = submenu; } }, template: ` <el-menu v-if="menu.items.length > 0" @click="menu.open" > <el-submenu :index="menu.items.length - 1"> <el-submenu v-for="(item, index) in menu.items" :key="index"> <el-button @click="updateSubmenuStatus(item)">点击我</el-button> <span>{{ item.text }}</span> </el-submenu> </el-submenu> </el-menu> ` });

      在这个例子中,当你点击 Item 2 的菜单项时,updateSubmenuStatus 方法会被调用,这将更新 menu.submenu 的状态。然后,这个状态将被应用到 el-menu 中的子项。

      请注意,这种方法可能并不总是理想,因为它依赖于 menu.items.lengthmenu.submenu 的值。如果 menu.items.length 为 0,那么 updateSubmenuStatus 方法将不会被调用,这可能导致一些意外的行为。

      因此,你应该根据具体的需求来决定是否使用这种方法。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部